读取utf-8文件(javascript XMLHttpRequest)会给出糟糕的欧洲字符

时间:2009-06-20 06:26:57

标签: javascript encoding utf-8 xmlhttprequest

任何人都可以帮忙吗?我有一个小程序,使用XMLHttpRequest使用javascript读取UTF-8文件..此文件包含miércolessábado等欧洲字符。请注意重音符号..

但是当被读入时...字符都搞砸了..我已经检查了文件并且它是完美的..它必须是阅读的程序..

继承人的一个例子我有文件包含,文件是完美的,它碰巧是javascript但没关系..任何带有特殊字符的UTF-8编码文件都给我同样的问题

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

但是当通过以下程序返回并阅读时,它就像这样(注意sabado和miercoles中的有趣人物)

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

这是我的程序 - 非常小......

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;

4 个答案:

答案 0 :(得分:21)

您的文件可能不是UTF-8,请尝试使用javascript:

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

答案 1 :(得分:1)

我认为您必须使用其他方式打印字符,例如,请参阅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>

答案 2 :(得分:1)

我遇到了同样的问题,我以这种方式修复了。

如果您将包含西班牙语天数的js文件作为UTF-8提供,并且if未保存为UTF-8,则WONT可以正常工作。

将文件作为UTF-8保存在IDE中(即js文件的eclipse默认值为cp1252),并将其作为UTF-8字符编码提供。

如果您的应用是java,请使用以下代码进行过滤:

response.setCharacterEncoding("UTF-8");

有一个好的

答案 3 :(得分:0)

我也面临同样的问题,我已经用这种方式解决了,

在Get请求中,我们通过url发送数据 所以我解码了url并通过字符串操作得到了请求的参数

考虑一下你是否正在发送这样的网址, var ur1 =“getSubjectList.jsp”; ur1 + =“?subjectlist =”+ str +“&amp; examId =”+ examId;

xmlHttp.open(“GET”,ur1,true);  xmlHttp.send(NULL);

在getSubjectList.jsp中,使用此 - String decodingParams = URLDecoder.decode(request.getQueryString(),“utf-8”);

String params [] = decodingParams.split(“&amp;”);

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

通过这种方式,您可以获得所需的值