Как стать автором
Обновить

Ошибка новичка: Кодируйте URI в UTF-8.

Время на прочтение1 мин
Количество просмотров677
В процессе освоения чрезвычайно простой, но тем неменее необычайно бажной и бездарно написаной фриварной ajax-библиотеки коментариев Ajax Generic Comments Module, я столкнулся интересным и неочевидным для меня эффектом. Комментарии некоторых пользователей на моём сайте отображались корректно, а коментарии других в виде хабразябр. Кодировка сайта по умолчанию utf-8. Но посты некоторых пользователей появлялись в cp1251. Я пытался повторить баг, но не смог этого сделать ни в одном из установленных в моей системе браузеров. (Установлена Linux Debian — это и была моя ошибка. Браузеры: Opera 9, FireFox, Konqueror.) Не протестировав либу только в одном из известных браузеров я понял, что худшие опасения сбываются. Запустил Internet Explorer 6.0 и — эврика. (Есть способ запускать Internet Explorer в Linux — IEs4Linux)



Примечание. Все не-latin-символы входящие в URI должны быть закодированы в UTF-8. Т.е. URI по которому будет производиться запрос дожен выглядеть так saveComment.php?commentText=%DD%FF%AA...

В итоге я пришел к выводу, что все популярные браузеры, за исключением Internet Explorer автоматически кодируют запрашиваемый url в utf-8. В случае с ослом используйте функцию javascript::encodeURI(url) непосредсвенно перед вызовом XMLHttpRequest.open(). А вообще, лучше всегда её используйте. :) О других функциях конвертирования в юникод можно прочитать здесь.

Теги:
Хабы:
+2
Комментарии9

Публикации

Изменить настройки темы

Истории

Ближайшие события

PG Bootcamp 2024
Дата16 апреля
Время09:30 – 21:00
Место
МинскОнлайн
EvaConf 2024
Дата16 апреля
Время11:00 – 16:00
Место
МоскваОнлайн
Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн