11

谁能帮忙?我有一个小程序可以使用 XMLHttpRequest 读取带有 javascript 的 UTF-8 文件。这个文件有欧洲字符,如 miércoles sá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

4 回答 4

27

可能您的文件不在 UTF-8 中,然后从 javascript 中尝试:

var request = new XMLHttpRequest();
request.open("GET", path, false);
request.overrideMimeType('text/xml; charset=iso-8859-1');
于 2014-02-15T14:29:29.803 回答
1

我有同样的问题,我以这种方式修复。

如果您将包含西班牙日的 js 文件作为 UTF-8 提供,并且 if 未保存为 UTF-8,它将无法工作。

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

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

response.setCharacterEncoding("UTF-8");

祝你有个好的一天

于 2009-10-19T11:07:39.333 回答
0

编辑:似乎这个答案虽然被接受,但不是最理想的,所以对于任何来到这里有类似问题的人,请查看里卡多的答案

我认为您必须使用不同的方式来打印字符,例如,请参阅本讨论末尾的代码:

<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>
于 2009-06-20T06:32:54.720 回答
0

我也遇到了同样的问题,我是这样解决的

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

考虑一下你是否发送这样的 url,var ur1="getSubjectList.jsp"; ur1 +="?subjectlist=" +str+"&examId="+examId;

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

在 getSubjectList.jsp 中,使用这个 -- String decodedParams= U​​RLDecoder.decode(request.getQueryString(),"utf-8" );

字符串参数[]=decodedParams.split("&");

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

这样,就可以得到请求的值

于 2016-04-01T09:19:12.697 回答