Question

can anyone help? I have small procedure to read in an UTF-8 file with javascript using XMLHttpRequest.. this file has european characters like miércoles sábado etc.. Notice the accents..

But when being read in .. the characters are all messed up.. I have checked the file and it is perfect.. it must be the procedure for reading in..

heres an example i have file that contains, the file is perfect, it happens to be javascript but it doesn't matter.. any UTF-8 encoding file with special characters gives me the same issue

this.weekDays = new Array("Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo");

but when returned and read by the procedure below it is like this (notice the funny characters in sabado and miercoles)

this.weekDays = new Array("Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo");

Here is my procedure - its very small...

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;
Was it helpful?

Solution

I think you have to use a different way to print the characters, for example, see the code at the end of this 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>

OTHER TIPS

Probably your file is not in UTF-8 then try this from javascript:

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

I'm having the same issue and I fixed in this way.

If you serve the js file containing the spanish days as UTF-8 and the if is NOT saved as UTF-8 it WONT work.

Save the file in your IDE as UTF-8 (ie. eclipse default for js files will be cp1252) and also serve it as UTF-8 char encoding.

If your app is java, do a filter with this code:

response.setCharacterEncoding("UTF-8");

have a good one

I also faced the same issue,I have solved in this way,

While In Get request, we are sending data through url So i decoded the url and get requested parameter through string operations

Consider if you are sending url like this, var ur1="getSubjectList.jsp"; ur1 +="?subjectlist=" +str+"&examId="+examId;

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

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

String params[]=decodedParams.split("&");

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

In this way,You can get the requested values

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top