バッファに有効な UTF-8 データが含まれていることを検証する必要があります。
Python では、バイトをデコードして例外をチェックするだけでこれを実行できます。以下の例では、エンコードされた '¢' の 1 バイト目をデコードしようとしています。例外は、バイトが不足していることを示しています。
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 ページを確認しましたが、エンコーディングに対してバッファを検証する方法が見つかりません。