如何在JavaScript中解析含德语特殊字符的RSS并正确显示
解决德语特殊字符转义问题的方法
不用手动替换转义字符,通过调整XMLHttpRequest的编码设置就能解决,具体操作如下:
- 删掉代码里的
xhrRequest.setRequestHeader("Content-Type", "text/xml");——这个请求头是给POST请求设置请求体编码用的,GET请求完全不需要,留着反而可能干扰响应的编码解析。 - 在调用
send()之前,添加overrideMimeType方法,强制指定响应的编码为UTF-8。
修改后的代码示例:
var url = 'https://apolut.net/feed/podcast/' xhrRequest = new XMLHttpRequest(); xhrRequest.onreadystatechange = function() { if (xhrRequest.readyState == 4) { // 此时responseText里的德语特殊字符会正常显示 console.log(xhrRequest.responseText); } } xhrRequest.onerror = function(e) { }; xhrRequest.open('GET', url); // 强制指定响应编码为UTF-8 xhrRequest.overrideMimeType('text/xml; charset=utf-8'); xhrRequest.send();
另外还有个更省心的方案:直接用xhrRequest.responseXML获取解析后的XML文档,而非responseText。因为RSS本身是XML格式,responseXML会自动正确解析文档中的特殊字符,直接操作XML节点就能拿到正常显示的文本内容。
原理说明:如果服务器返回的响应头未正确声明UTF-8编码,XMLHttpRequest可能会用默认编码解析响应,导致特殊字符被转义成Unicode序列。overrideMimeType可以强制xhr按照指定编码解码响应内容,从而保留原始的德语特殊字符。
内容的提问来源于stack exchange,提问作者Toniq
相关产品推荐
相关产品推荐

