2013-12-17 22 views
2

有沒有簡單的方法來檢查字符串是否在Javascript中是有效的UTF-8序列?檢查在Javascript中字節序列是否是有效的UTF-8序列

我真的不想這樣的正則表達式來結束:

Regex to detect Invalid UTF-8 String

PS:我是從外部API接收數據,有時(很少,但它發生),它與無效UTF-返回數據8排序。試圖將它們放入postgres中導致相應的錯誤

+1

我不認爲這是真的有道理。一個字符串是一個字符列表。 UTF-8是以二進制格式表示字符的一種方式。一個字符串本身沒有編碼。 – njzk2

+0

除非你試圖確定一個字符串是否可以用utf-8編碼完全表示? – njzk2

+0

檢查有效的UTF8的唯一方法是檢查它是否包含**無效的** utf8字符。您鏈接的正則表達式是執行檢查的有效,簡潔和有效的方法。當然,您可以用自定義的方式檢查自己的字典。 –

回答

4

UTF-8實際上是一種簡單的編碼,但仍然不能用單線程完成。你必須:

  1. 覆蓋響應的Content-Type有在腳本中的字節數組,並防止瀏覽器/庫解釋響應本身
  2. 循環執行的字節以使角色。請注意,UTF-8是一種可變長度編碼,這就是爲什麼一些序列無效。
  3. 如果發現無效八位位組,跳過它
  4. 如果需要反序列化JSON/XML /不管字符串到Javascript對象,可能是通過移交失敗

決定如果某個陣列是一個有效的UTF- 8序列是quite a straightforward task(只是一堆if陳述和位移),但它不是一回事。

相關問題