2009-06-20 47 views
5

任何人都可以帮忙吗?我有一个小的程序,使用XMLHttpRequest以javascript读取UTF-8文件。此文件具有像miércolessábado等欧洲字符。注意这些重音..阅读utf-8文件(javascript XMLHttpRequest)给欧洲不好的字符

但是当读入时......字符全部被搞乱up ..我已检查文件,它是完美的..它必须是在阅读过程..

继承人一个例子我有文件,包含文件是完美的,它恰好是JavaScript,但它doesn 't matter ..任何具有特殊字符的UTF-8编码文件给我提供相同的问题

this.weekDays = new Array(“Lunes”,“Martes”,“Miércoles”,“Jueves”,“Viernes”, “萨巴多”,“多明戈”);

但返回时和阅读下述步骤是这样的(请注意sabado有趣的人物和miercoles)

this.weekDays =新的Array(“Lunes”,“貂”,“米娅©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; 
+0

你确定该文件是UTF-8?你是否设置了文本编辑器来明确地保存该编码? 将请求设置为UTF-8是无关紧要的,UTF-8中的答案和响应中的相应标题集是否真的如此? – jitter 2009-06-20 07:07:01

回答

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> 
1

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

如果您将包含西班牙语天数的js文件作为UTF-8提供,并且if不保存为UTF-8,则WONT将起作用。

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

如果您的应用程序是用java,做一个过滤器使用此代码:

response.setCharacterEncoding("UTF-8"); 

有一个很好的

15

可能是你的文件不是UTF-8,然后从JavaScript试试这个:

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

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

虽然在获取热曲EST,我们是通过URL 发送数据所以我解码的URL并获得请求的参数通过字符串操作

考虑,如果你是这样的发送URL, VAR UR1 =“getSubjectList.jsp”; ur1 + =“?subjectlist =”+ str +“& examId =”+ examId;

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

在getSubjectList.jsp中,使用这个 - 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]; 

通过这种方式,你可以得到所要求的值