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
UTF-8 is in fact a simple encoding, still what you are asking can't be done with a one-liner. You have to:
- 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
- Looping over the bytes to make characters. Note that UTF-8 is a variable-length encoding, that's why some sequences are invalid.
- If an invalid octet is found, skip it
- 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.