【问题标题】:How to detect encoding errors in a Node.js Buffer如何检测 Node.js 缓冲区中的编码错误
【发布时间】:2020-05-02 04:48:05
【问题描述】:

我正在将 Node.js 中的文件读取到 Buffer 对象中,并且我正在使用 Buffer.toString('utf8') 解码 Buffer 的 UTF-8 内容。如果有编码错误,我要报告失败。

toString() 方法通过替换 xFFFD 字符来处理解码错误,我可以通过搜索结果来检测到该字符。但是xFFFD 是输入文件中的合法字符,如果xFFFD 存在并且在输入中正确编码,我不想报告错误。

有什么方法可以区分包含合法编码的xFFFD 字符的Buffer 和包含编码错误的字符吗?

【问题讨论】:

  • 我通过 contents = buffer.toString('utf8'); if (contents.indexOf("\ufffd") >= 0 && !buffer.includes("\ufffd")) {...} 找到了一种解决方法,但它非常丑陋且效率低下,并且它不能处理输入包含 FFFD 字符和编码错误的极端情况。
  • 一种可能性是使用nodejs.org/api/util.html#util_class_util_textdecoder 并将fatal 选项设置为true。
  • @eol 感谢您的指点,看起来很有希望

标签: node.js character-encoding buffer node.js-stream


【解决方案1】:

@eol 在对该问题的评论中提出的解决方案似乎符合要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-30
    • 2017-03-15
    • 2012-12-05
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    相关资源
    最近更新 更多