Декодирование ISO-8859-1 в Unicode с использованием Javascript - PullRequest
0 голосов
/ 21 марта 2020

В настоящее время у меня возникают некоторые проблемы при создании нового сайта на основе устаревшей базы данных, и я пытаюсь разобраться с кодировкой символов. Старый сайт использовал ISO-8859-1, и я хочу, чтобы новый сайт использовал UTF-8.

Проблема заключается в попытке выполнить преобразование внешних строк комментариев пользователей в базе данных.

Например, если пользователь вводит русское слово Привет, оно сохраняется в базе данных как ÐŸÑ € Ð¸Ð²ÐµÑ ‚.

Я понимаю, что это потому, что каждый символ хранится как два числа (08 9159, 209⁄128, 208⁄184, 208⁄178, 208⁄181 и 209⁄130).

Если я запускаю javascript:

> escape("Привет")
"%D0%u0178%D1%u20AC%D0%B8%D0%B2%D0%B5%D1%u201A"

Это то, что Я не понимаю Некоторые из этих символов правильно представлены в виде двух шестнадцатеричных байтов (например,% D0% B8), но некоторые представляют собой один шестнадцатеричный байт, за которым следует символ Юникода (например,% D0% u0178). Первые прекрасно декодируют, используя decodeURIComponent ("% D0% B8"), а вторые нет.

Почему это происходит?

...