la lecture dans le fichier utf-8 (javascript XMLHttpRequest) donne de mauvais caractères européens

StackOverflow https://stackoverflow.com/questions/1021086

Question

quelqu'un peut-il aider? J'ai une petite procédure pour lire un fichier UTF-8 avec javascript à l'aide de XMLHttpRequest .. Ce fichier contient des caractères européens tels que mi & # 233; rcoles s & # 225; bado etc. Notez les accents ..

Mais lorsqu’ils sont lus .. les caractères sont tous foirés .. j’ai vérifié le fichier et c’est parfait .. ce doit être la procédure de lecture ..

voici un exemple de fichier que contient, le fichier est parfait, il s’agit de javascript mais peu importe. Tout fichier de codage UTF-8 avec des caractères spéciaux me donne le même problème

this.weekDays = new Array ("Lunes", "Martes", "Mi" # 233; rcoles "," Jueves "," Viernes "," S "," S "," S & 225 "," S "; Domingo ");

mais une fois renvoyé et lu par la procédure ci-dessous, il ressemble à ceci (remarquez les personnages amusants de sabado et de miercoles)

this.weekDays = new Array ("Lunes", "Martes", "Mi" # 195; "169" rcoles "," Jueves "," Viernes "," S & 195 "& # 161; bado "," Domingo ");

Voici ma procédure - c'est très petit ...

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;
Était-ce utile?

La solution

Je pense que vous devez utiliser une méthode différente pour imprimer les caractères, par exemple, consultez le code à la fin de cette discussion :

<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>

Autres conseils

Votre fichier n'est probablement pas en UTF-8, puis essayez ceci à partir de javascript:

var request = new XMLHttpRequest();
request.open("GET", path, false);
request.overrideMimeType('text/xml; charset=iso-8859-1');

J'ai le même problème et j'ai résolu ce problème.

Si vous transmettez le fichier js contenant les jours espagnols au format UTF-8 et que le fichier if n'est PAS enregistré au format UTF-8, cela ne fonctionnera pas.

Enregistrez le fichier dans votre IDE au format UTF-8 (c.-à-d. le paramètre par défaut pour les fichiers js sera cp1252) et le servira également comme encodage de caractères UTF-8.

Si votre application est java, créez un filtre avec le code suivant:

response.setCharacterEncoding("UTF-8");

en avoir un bon

J'ai également fait face au même problème, j'ai résolu de cette façon,

Pendant la requête Get, nous envoyons des données via l'URL. Donc, j'ai décodé l'URL et obtenir le paramètre demandé à travers des opérations de chaîne

Considérez si vous envoyez une URL de cette manière, var ur1 = "getSubjectList.jsp" ;; ur1 + = "? subjectlist = " + str + & amp;; examId = " + examId;

xmlHttp.open ("GET", ur1, true);  xmlHttp.send (null);

Dans getSubjectList.jsp, utilisez this-- String decodedParams = URLDecoder.decode (request.getQueryString (), "utf-8");

Paramètres de chaîne [] = decodedParams.split ("& amp;");

     String subjectlist[]=params[0].split("=");
     String examId[] = params[1].split("=");
     String center = subjectlist[1];
    String exam = examId[1];

De cette manière, vous pouvez obtenir les valeurs demandées

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top