la lettura nel file utf-8 (javascript XMLHttpRequest) fornisce caratteri europei non validi
-
06-07-2019 - |
Domanda
qualcuno può aiutare? Ho una piccola procedura da leggere in un file UTF-8 con javascript usando XMLHttpRequest .. questo file ha caratteri europei come miércoles sábado ecc. Notare gli accenti ..
Ma quando vengono letti ... i personaggi sono tutti incasinati .. Ho controllato il file ed è perfetto .. deve essere la procedura per leggere in ...
ecco un esempio che ho un file che contiene, il file è perfetto, sembra essere javascript ma non importa .. qualsiasi file di codifica UTF-8 con caratteri speciali mi dà lo stesso problema
this.weekDays = new Array (" Lunes " ;, " Martes " ;, " Miércoles " ;, " Jueves " ;, " Viernes " ;, " Sábado " ;, " Domingo ");
ma quando restituito e letto dalla procedura seguente è così (nota i personaggi divertenti in sabado e miercoles)
this.weekDays = new Array (" Lunes " ;, " Martes " ;, " Mià © rcoles " ;, " Jueves " ;, " Viernes " ;, " Sábado " ;, " Domingo ");
Ecco la mia procedura - è molto piccola ...
var contentType = "application/x-www-form-urlencoded; charset=utf-8";
var request = new XMLHttpRequest();
request.open("GET", path, false);
request.setRequestHeader('Content-type', contentType)
if (request.overrideMimeType) request.overrideMimeType(contentType);
try { request.send(null); }
catch (e) { return null; }
if (request.status == 500 || request.status == 404 || request.status == 2 || (request.status == 0 && request.responseText == '')) return null;
//PROBLEM HERE is with european charcters that are read in
print(request.responseText);
return request.responseText;
Soluzione
Penso che devi usare un modo diverso per stampare i caratteri, ad esempio, vedi il codice alla fine di questa discussione :
<script>
function getUnicode(num) {
num = num.toString(16);
if (num.length < 3) {
for ( var i = num.length; i < 4; i++) {
num = '0' + num;
}
}
return ( "&#" + num + ";" );
}
for ( var i = 0; i < 65355; i++) {
document.write(getUnicode(i));
}
</script>
Altri suggerimenti
Probabilmente il tuo file non è in UTF-8 quindi prova questo da javascript:
var request = new XMLHttpRequest();
request.open("GET", path, false);
request.overrideMimeType('text/xml; charset=iso-8859-1');
Sto riscontrando lo stesso problema e ho risolto in questo modo.
Se servi il file js contenente i giorni spagnoli come UTF-8 e il if NON viene salvato come UTF-8 NON funzionerà.
Salva il file nel tuo IDE come UTF-8 (ad es. il valore predefinito di eclipse per i file js sarà cp1252) e lo servirà anche come codifica del carattere UTF-8.
Se l'app è Java, crea un filtro con questo codice:
response.setCharacterEncoding("UTF-8");
ne hai una buona
Ho anche affrontato lo stesso problema, ho risolto in questo modo,
Durante la richiesta Get, stiamo inviando dati tramite url Quindi ho decodificato l'URL e ho ricevuto il parametro richiesto tramite operazioni stringa
Considera se stai inviando un URL in questo modo, var ur1 = " getSubjectList.jsp " ;; ur1 + = "? subjectlist = " + + Str " & amp; examId = " + examId;
xmlHttp.open (" GET " ;, ur1, true); xmlhttp.send (null);
In getSubjectList.jsp, usa questo-- String decodedParams = URLDecoder.decode (request.getQueryString (), " utf-8 ");
String params [] = decodedParams.split (" & amp; ");
String subjectlist[]=params[0].split("=");
String examId[] = params[1].split("=");
String center = subjectlist[1];
String exam = examId[1];
In questo modo, è possibile ottenere i valori richiesti