4

我需要验证缓冲区是否包含有效的 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 页面,但我找不到任何方法可以根据编码验证缓冲区。

4

0 回答 0