检查Javascript中的字节序列是否是有效的UTF-8序列

时间:2013-12-17 16:09:05

标签: javascript utf-8

有没有一种简单的方法来检查字符串是否是Javascript中的有效UTF-8序列?

我真的不想以这样的正则表达式结束:

Regex to detect Invalid UTF-8 String

P.S。:我正在从外部API接收数据,有时(非常罕见,但它会发生)它返回带有无效utf-8序列的数据。试图将它们放入postgres会导致适当的错误

1 个答案:

答案 0 :(得分:4)

UTF-8实际上是一种简单的编码方式,但仍然无法用单线程进行编码。你必须:

  1. 覆盖响应的Content-Type以在脚本中包含字节数组并阻止浏览器/库自行解释响应
  2. 循环使用字节来制作字符。请注意,UTF-8是一种可变长度编码,这就是某些序列无效的原因。
  3. 如果找到无效的八位字节,请跳过它
  4. 如果需要,可以通过处理失败将JSON / XML /任意字符串反序列化为Javascript对象
  5. 确定某个数组是否是有效的UTF-8序列是quite a straightforward task(只是一堆if语句和位移),但同样不是一行。