我尝试使用 Node.js 从远程主机加载 XML 内容。
问题是像“ä”这样的德语“元音变音”被破坏了。就像在浏览器中一样,这通常是一个简单的编码问题。但由于远程主机上的 XML 内容是用 iso-8859-2 编码的,所以我没有成功让这些字母恢复工作。
功能非常简单。我只是使用 Node.js 中集成的默认 HTTP 客户端通过简单的 get 请求连接到远程主机。
一些环境事实:
- 远程系统使用“iso-8859-2”编码。
- 编码当前在响应标头中设置。
- 接收到的数据(块)中的字符是不可恢复的损坏的
response.onData(chunk)
Node.js 在默认 Debian 服务器上运行 0.2 版。
该代码基于默认的 httpClient,如 Node.js 文档中所述。
我尝试了以下方法:
response.defaultAsciiEncoding true/false
response.encoding = UFT-8/ascii
我使用 UTF-8 编码器/解码器来对块进行编码/解码。失败后,我尝试对整个响应正文进行编码/解码。
我对使用缓冲区不太熟悉,我想问题一定是在那个方向。或者 Node.js(或 httpClient)默认情况下根本无法处理其他编码类型,这是我的第二个猜测。在这种情况下,我需要使用我认为的网络库编写自己的 HTTP 客户端。我只是想确保我没有走错方向:)
我快速浏览了一下 Node.js 源代码,看起来 svick 是对的:Node.js 不支持 ISO 编码。但是,您可以以二进制流的形式获取响应,然后使用您自己的编码将其返回到浏览器或使用 node-iconv (再次按照 svick 建议)。
这是一个小例子:http://gist.github.com/576884 http://gist.github.com/576884
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)