在 javascript 上解码 utf8 字符
Decode utf8 character on javascript
我有一个配置不当的第三方服务输出这样的字符串:
"SK Uni=C4=8Dov vs Prostejov"
我想即时替换它发送给我的所有错误字符,这样我的模块就可以使用正确解码的字符串
我在这个网站(https://www.compart.com/en/unicode/U+010D)上发现 =C4=8D
子串对应于 utf-8 字符 č
https://www.compart.com/en/unicode/U+010D
č
...
UTF-8 Encoding: 0xC4 0x8D
UTF-16 Encoding: 0x010D
UTF-32 Encoding: 0x0000010D
...
但是我找不到自动解码的方法
我试过:
>> String.fromCodePoint(0xc48d)
"쒍"
>> String.fromCodePoint("0xc4 0x8d")
RangeError
>> String.fromCharCode(0xc48d)
"쒍"
etc...
如果我使用 utf-16 代码执行此操作,String.fromCodePoint(0x010D)
会输出正确的字符。
如何让它使用 utf-8 而不是 utf-16 代码?
我应该将我的字符串转换为 utf16 来实现我想要的吗?如果可以,如何转换?
由于编码与 URL 中使用的百分比转义几乎相同,您可以简单地使用:
decodeURIComponent("SK Uni=C4=8Dov vs Prostejov".replace(/=/g, "%"))
我有一个配置不当的第三方服务输出这样的字符串:
"SK Uni=C4=8Dov vs Prostejov"
我想即时替换它发送给我的所有错误字符,这样我的模块就可以使用正确解码的字符串
我在这个网站(https://www.compart.com/en/unicode/U+010D)上发现 =C4=8D
子串对应于 utf-8 字符 č
https://www.compart.com/en/unicode/U+010D
č
...
UTF-8 Encoding: 0xC4 0x8D
UTF-16 Encoding: 0x010D
UTF-32 Encoding: 0x0000010D
...
但是我找不到自动解码的方法
我试过:
>> String.fromCodePoint(0xc48d)
"쒍"
>> String.fromCodePoint("0xc4 0x8d")
RangeError
>> String.fromCharCode(0xc48d)
"쒍"
etc...
如果我使用 utf-16 代码执行此操作,String.fromCodePoint(0x010D)
会输出正确的字符。
如何让它使用 utf-8 而不是 utf-16 代码?
我应该将我的字符串转换为 utf16 来实现我想要的吗?如果可以,如何转换?
由于编码与 URL 中使用的百分比转义几乎相同,您可以简单地使用:
decodeURIComponent("SK Uni=C4=8Dov vs Prostejov".replace(/=/g, "%"))