В сегодняшнем проекте я столкнулся с ситуацией, когда мне нужно было кодировать китайские иероглифы с JavaScript, а затем декодировать их с помощью Unescape. При тестировании сегмента кода у меня был искаженный код.
Конкретная ситуация заключается в следующем:
Во -первых, используйте EditPlus, чтобы открыть тест на тестовую страницу. HTML и отредактируйте следующий HTML -код:
<! Doctype html public "-// w3c // dtd xhtml 1.0 transitional // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> xmlns = "http://www.w3.org/1999/xhtml"> <Head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"/> <title> test </title> </head> <body> <fcript> teststr = Escape ("wulin.com"); document.write (teststr); </script> </body> </html>Распечатка страницы:
%ufffd%u0171%ufffd%u05ae%ufffd%ufffd%ufffd
В настоящее время мы видим, что ситуация неверна. Это уже неправильно с точки зрения количества символов, соответствующих китайским иехам!
Затем используйте следующий код, чтобы проверить китайские иероглифы, декодированные UNESCAPE:
var relstr = unescape ("%ufffd%u0171%ufffd%u05ae%ufffd%uffd"); document.write (relstr);Появляется код мусора: �ű� ֮��
Решение:
Я открыл файл test.html с DreamWeaver и нашел проблему!
Оригинальная часть
var teststr = Escape ("wulin.com");Становиться
var teststr = exck ("ű֮");Видно, что это вызвано первоначальным кодированием редактора!
Измените китайские иероглифы в Dreamweaver, повторный тест. Html и получите соответствующее кодирование:
%U811A%U672C%U4E4B%U5BB6
Затем используйте Unessape для декодирования:
var relstr = unescape ("%u811a%u672c%u4e4b%u5bb6"); document.write (relstr);Тогда я получил оригинальный правильный китайский персонаж: wulin.com!