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;
È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top