Pull to refresh

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

Reading time1 min
Views746
В процессе освоения чрезвычайно простой, но тем неменее необычайно бажной и бездарно написаной фриварной 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(). А вообще, лучше всегда её используйте. :) О других функциях конвертирования в юникод можно прочитать здесь.

Tags:
Hubs:
Total votes 4: ↑3 and ↓1+2
Comments9

Articles