Доброго времени суток!
Нахожусь в некоторых непонятках насчет того, как кодировать строки не-ASCII символов (русские, например) при передаче их как параметров URL. Использовал escape, который такие символы кодирует в виде %uXXX, но в Safari наткнулся на проблему: Сафари зачем-то кодирует такую строку еще раз и на сервере, естественно, я получаю не то, что нужно.
Почитал, что об этом пишут на просторах сети, узнал про encodeURIComponent/decodeURIComponent. Т.к. все страницы в UTF-8, решил использовать эти функции (правда, их нет в IE 5.0, совместимость с которым я должен обеспечить, там решил по-прежнему использовать escape). Сделал реализацию этих функций на сервере (т.к. часть URL-ей формируется там и передается на клиент либо в HTML-е, либо в JS-коде).
Но потом столкнулся такой штукой: если я готовлю URL на сервере и кодирую его параметры encodeURIComponent, а потом закладываю результат в HTML (или даже делаю все на клиенте, но результат записываю как-то так: a.href = "javascript:func('" + url + "');";), то браузер раскодирует URL (под IE получаются кракозябры, под Сафари - просто исходные значения параметров). Поэтому приходится перед такой записью делать encodeURI на весь URL. Можно, конечно, найти теперь все места, где в HTML закладываются URL-и и везде добавить добавочное кодирование, реализовав на сервере encodeURI, но как-то это грустно.
Подскажите, пожалуйста, есть какое-нибудь руководство по таким вещам, где подобные грабли описываются для разных браузеров (IE 5.0+, Firefox 1.5+, Opera, Safari)? Или просто выскажите мнение на проблему.