在node.js中,如何验证缓冲区中的UTF8数据?

时间:2013-09-02 00:06:45

标签: node.js utf-8

我需要验证缓冲区是否包含有效的UTF-8数据。

在Python中,我可以通过简单地尝试解码字节并检查异常来做到这一点。 在下面的例子中,我尝试解码编码'¢'的第一个字节。例外告诉我,我缺少字节。

Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> s = '¢'
>>> s_bytes[:1].decode()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc2 in position 0: unexpected end of data

这种方法在node.js中不起作用,因为解码更加宽容。

> s = '¢'
'¢'
> s_buffer = Buffer(s)
<Buffer c2 a2>
> s_buffer.toString('utf8', 0, 1)
'?'
>

我检查了Buffer API page,但是我找不到任何根据编码验证缓冲区的方法。

0 个答案:

没有答案