Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用nodejs iconv模块(或其他解决方案)在nodejs javascript中将字符编码从CP932转换为UTF-8_Javascript_Node.js_Character Encoding_Iconv_Serverside Javascript - Fatal编程技术网

如何使用nodejs iconv模块(或其他解决方案)在nodejs javascript中将字符编码从CP932转换为UTF-8

如何使用nodejs iconv模块(或其他解决方案)在nodejs javascript中将字符编码从CP932转换为UTF-8,javascript,node.js,character-encoding,iconv,serverside-javascript,Javascript,Node.js,Character Encoding,Iconv,Serverside Javascript,我正试图在javascript中将一个字符串从CP932(又名Windows-31J)转换为utf8。基本上,我正在抓取一个忽略请求头中的utf-8请求并返回cp932编码文本的站点(即使html元标记指示页面是shift_jis) 无论如何,我将整个页面存储在一个名为“html”的字符串变量中。在此,我尝试使用以下代码将其转换为utf8: var Iconv = require('iconv').Iconv; var conv = new Iconv('CP932', 'UTF-8//TRAN

我正试图在javascript中将一个字符串从CP932(又名Windows-31J)转换为utf8。基本上,我正在抓取一个忽略请求头中的utf-8请求并返回cp932编码文本的站点(即使html元标记指示页面是shift_jis)

无论如何,我将整个页面存储在一个名为“html”的字符串变量中。在此,我尝试使用以下代码将其转换为utf8:

var Iconv = require('iconv').Iconv;
var conv = new Iconv('CP932', 'UTF-8//TRANSLIT//IGNORE');

var myBuffer = new Buffer(html.length * 3);
myBuffer.write(html, 0, 'utf8')
var utf8html = (conv.convert(myBuffer)).toString('utf8');
结果不是预期的结果。例如,字符串:投稿者さんの 稚内全日空ホテル のクチコミ (感想・情報)" 结果是“ソスソスソスEソスメゑソスソスソスソスソス ソスTソスソスソスsソスソスソスソスソスZソスEソスソス ソスフクソス`ソスRソス~ (ソスソスソスZソスEソスソスソスソス)"

如果我删除//TRANSLIT//IGNORE(这将导致它为缺少的字符返回类似的字符,如果不删除,则忽略不可转码的字符),我将得到以下错误: 错误:EILSEQ,非法字符序列

我愿意使用任何可以在nodejs中实现的解决方案,但我的搜索结果并没有给出nodejs iconv模块之外的很多选项

节点图标参考:

谢谢

2011年6月24日编辑: 我已经用Java实现了一个解决方案。但是,如果有人能解决这个问题,我仍然对javascript解决方案感兴趣。

我今天也遇到了同样的问题:)
这取决于libiconv。您需要libiconv-1.13-ja-1.补丁。
请检查以下内容

或者,您也可以使用iconv jp来避免问题

npm install iconv-jp npm安装iconv jp

我尝试了/Users/Me/node_modules/iconv/test.js node test.js。 它返回错误


在Mac OS X Lion上,这个问题似乎取决于gcc。

我也有同样的问题,但在CP1250上。我到处寻找问题,除了请求调用之外,一切都正常–我必须添加
编码:“二进制”

request = require('request')
Iconv  = require('iconv').Iconv

request({uri: url, encoding: 'binary'}, function(err, response, body) {
    body = new Buffer(body, 'binary')
    iconv = new Iconv('CP1250', 'UTF8')
    body = iconv.convert(body).toString()
    // ...
})

你是否碰巧混淆了FROM和TO?我设置它的方式与模块文档中的示例相匹配,但只是为了好玩,我尝试交换它,结果更糟。我得到以下字符串:“e tSze N`R~(zE)”