我试过在javascript中使用decodeURIComponent()
和decodeURI()
来处理字符串“Ð-
当我在(某些)解码网站(如https://2cyr.com/decode/或https://encoder.mattiasgeniar.be/)上输入这个字符串时,它解码得很好,在其他网站上它不起作用(https://www.browserling.com/tools/utf8-decode),而且它也不起作用javascript提供的上述功能(见这里:https://www.w3schools.com/code/tryit.asp?filename=G6VG1L4MSBD8)。
为什么会这样?这是不是与decodeURI[Component]()的用途不同的UTF-8编码?Javascript甚至可以解码我的特定(已编码)字符串,还是必须更改数据库?
最佳答案
正如您在设法“解码”该字符串的工具中看到的,似乎有人使用了UTF-8编码的字符串,并将底层字节视为Windows-1252编码的字符串。
如果您是从服务器接收的(顺便问一下,您接收的确切字节是多少?使用头发布HTTP响应)并且您可以控制服务器,您应该修复这个服务器端,而不是尝试在JS中使用它。
decodeURIComponent使用字符串"%D0%97%D0%B0%D0%B2%D1%82%D1%80%D0%B0%20%D0%B1%D1%8B%D0%BB%D0%B0%20%D0%B2%D0%BE%D0%B9%D0%BD%D0%B0"
。
关于javascript - Javascript encodeURIComponent()无法与MySQL编码的UTF-8字符串一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57446613/