Check if the bytes sequence is valid UTF-8 sequenc

2019-07-12 14:57发布

Is there a simple way to check if string is valid UTF-8 sequence in Javascript?

I really do not want to end with regexp like this:

Regex to detect Invalid UTF-8 String

P.S.: I am receiving data from external API and sometimes (very rarely but it happens) it returns data with invalid utf-8 seqences. Trying to put them into postgres results in appropriate error

1条回答
神经病院院长
2楼-- · 2019-07-12 15:37

UTF-8 is in fact a simple encoding, still what you are asking can't be done with a one-liner. You have to:

  1. Override the Content-Type of the response to have a byte array in your script and prevent the browser/library to interpret the response itself
  2. Looping over the bytes to make characters. Note that UTF-8 is a variable-length encoding, that's why some sequences are invalid.
  3. If an invalid octet is found, skip it
  4. If needed deserialize the JSON/XML/whatever string to a Javascript object, possibly by handing failures

Deciding if a certain array is a valid UTF-8 sequence is quite a straightforward task (just a bunch of if statements and bit shiftings), but again it's not a one line thing.

查看更多
登录 后发表回答