| ▲ | georgemandis 2 hours ago | |||||||
The language handled it fine. It will generally just show replacement characters (�) for combos that don't map to anything. It was really `encodeURIComponent` that didn't handle it gracefully. If you just type this into the console (surrogate pair for cowboy smiley face emoji), you see it encodes it ("%F0%9F%A4%A0"): encodeURIComponent("\uD83E\uDD20") If you give it an invalid surrogate pair, it will throw an actual error: encodeURIComponent("\uDD20\uD83E") | ||||||||
| ▲ | chrismorgan an hour ago | parent [-] | |||||||
No, the language did not handle it fine. It allowed an invalid Unicode string to exist. This is basically a UTF-16 affliction—nothing that does UTF-16 validates, whereas almost everything that does UTF-8 does validate. encodeURIComponent deals with UTF-8, so of course it throws. | ||||||||
| ||||||||