读取utf-8文件(javascript XMLHttpRequest)会产生不好的欧洲字符
有人能帮忙吗?我有一个小程序,可以使用XMLHttpRequest通过javascript读取UTF-8文件。。这个文件有欧洲字符,如米尔科尔斯·萨巴多等。。注意口音 但是当被读入时。。这些角色都搞砸了。。我查过文件了,它很完美。。这必须是读入的程序 这里有一个例子,我有一个文件,其中包含,该文件是完美的,它恰好是javascript,但这并不重要。。任何带有特殊字符的UTF-8编码文件都会给我带来同样的问题 this.weekDays=新数组(“Lunes”、“Martes”、“Miércoles”、“Jueves”、“Viernes”、“Sábado”、“Domingo”) 但是当通过下面的过程返回并读取时,它是这样的(注意sabado和miercoles中的有趣字符) this.weekDays=新阵列(“Lunes”、“Martes”、“MiÃrcoles”、“Jueves”、“Viernes”、“SÃbado”、“Domingo”) 这是我的程序-它非常小读取utf-8文件(javascript XMLHttpRequest)会产生不好的欧洲字符,javascript,encoding,utf-8,xmlhttprequest,Javascript,Encoding,Utf 8,Xmlhttprequest,有人能帮忙吗?我有一个小程序,可以使用XMLHttpRequest通过javascript读取UTF-8文件。。这个文件有欧洲字符,如米尔科尔斯·萨巴多等。。注意口音 但是当被读入时。。这些角色都搞砸了。。我查过文件了,它很完美。。这必须是读入的程序 这里有一个例子,我有一个文件,其中包含,该文件是完美的,它恰好是javascript,但这并不重要。。任何带有特殊字符的UTF-8编码文件都会给我带来同样的问题 this.weekDays=新数组(“Lunes”、“Martes”、“Miércol
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;
编辑:这个答案虽然被接受,但似乎不是最理想的,所以对于有类似问题的人,请查看 我认为您必须使用不同的方式来打印字符,例如,请参见以下末尾的代码:
函数getUnicode(num){
num=num.toString(16);
如果(数量长度<3){
对于(变量i=num.length;i<4;i++){
num='0'+num;
}
}
返回(“+num+”);
}
对于(变量i=0;i<65355;i++){
document.write(getUnicode(i));
}
我也有同样的问题,我用这种方式解决了
如果您将包含西班牙语天数的js文件作为UTF-8提供,而If没有保存为UTF-8,那么它将无法工作
在IDE中将文件保存为UTF-8(即eclipse默认js文件为cp1252),并将其作为UTF-8字符编码
如果您的应用程序是java,请使用以下代码进行筛选:
response.setCharacterEncoding("UTF-8");
有一个好的可能您的文件不是UTF-8格式的,然后从javascript尝试以下操作:
var request = new XMLHttpRequest();
request.open("GET", path, false);
request.overrideMimeType('text/xml; charset=iso-8859-1');
我也面临同样的问题,我是这样解决的, 在Get请求中,我们通过url发送数据 因此,我对url进行解码,并通过字符串操作获取请求的参数 考虑一下,如果您发送的url是这样的, var ur1=“getSubjectList.jsp”; ur1+=“?主题列表=“+str+”&examId=“+examId open(“GET”,ur1,true); xmlHttp.send(空) 在getSubjectList.jsp中,使用-- 字符串decodedParams=urldecker.decode(request.getQueryString(),“utf-8”) 字符串参数[]=decodedParams.split(&)
这样,您就可以获得请求的值您确定该文件是UTF-8格式的吗?您是否将文本编辑器设置为使用该编码显式保存?将请求设置为UTF-8是不相关的,答案真的是UTF-8和响应中设置的相应标头吗?thgis是旧的,但对于在这方面遇到障碍的任何人,请使用.overrideMetype('text/plain;charset=utf8');我确信我的文件是UTF-8编码的,但是服务器没有返回这个字符集头,所以这就解决了问题。@Dinei如果这个代码段对您有效,这意味着您的输出不是UTF8格式的。某些服务器提供程序可能会修改您的输出。我建议在《邮递员》中试试,并检查标题。我有一个UTF-8编码的
.json
文件,但出于某种原因,它被提供了内容类型:text/plain;字符集=ISO-8859-1
标题。使用overrideMimeType
和charset=UTF-8
解决了我的问题。对不起,这个问题是关于javascript的,不是关于java的。
var request = new XMLHttpRequest();
request.open("GET", path, false);
request.overrideMimeType('text/xml; charset=iso-8859-1');
String subjectlist[]=params[0].split("=");
String examId[] = params[1].split("=");
String center = subjectlist[1];
String exam = examId[1];