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;
Advertisement
Answer
EDIT: Seems that this answer, although accepted, is suboptimal, so for anyone coming here with a similar problem, check out Ricardo’s answer
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>