相关疑难解决方法(0)

如何在node.js中捕获utf-8解码错误?

我刚刚发现Node(已测试:v0.8.23,当前git:v0.11.3-pre)忽略其缓冲区处理中的任何解码错误,用'\ufffd'(Unicode REPLACEMENT CHARACTER)静默替换任何非utf8字符,而不是抛出异常非utf8输入.因此,fs.readFile,process.stdin.setEncoding和朋友面膜类大对你坏输入错误的.

示例哪个没有失败,但确实应该:

> notValidUTF8 = new Buffer([ 128 ], 'binary')
<Buffer 80>
> decodedAsUTF8 = notValidUTF8.toString('utf8') // no exception thrown here!
'?'
> decodedAsUTF8 === '\ufffd'
true
Run Code Online (Sandbox Code Playgroud)

'\ufffd'是一个完全有效的字符,可以出现在合法的utf8中(作为序列ef bf bd),因此基于在结果中显示的错误处理中的猴子补丁是非常重要的.

进一步挖掘,看起来这源于节点只是推迟到v8的字符串,而那些反过来具有上述行为,v8没有任何外部世界充满外来编码数据.

是否有节点模块或其他让我捕获utf-8解码错误,最好是关于输入字符串或缓冲区中发现错误的位置的上下文?

error-handling utf-8 utf8-decode node.js npm

14
推荐指数
2
解决办法
2941
查看次数

标签 统计

error-handling ×1

node.js ×1

npm ×1

utf-8 ×1

utf8-decode ×1