Странная проблема с кодировкой - иврит

У меня есть скрипт, который отслеживает посещения и ссылки на веб-сайт.

Я отправляю document.referrer (я использую escape() в javascript) на сервер и сохраняю строку в базе данных после ее декодирования с помощью HttpUtility.HtmlDecode (C#).

В большинстве случаев я могу разобрать строку реферера и показать символы иврита, но в некоторых случаях я не могу.

Я обнаружил, что две строки разные (одна отображается правильно, а другая нет)

Тот, который отображается справа, содержит следующие символы: http://www.google.co.il/search?hl=iw&source=hp&q=%D7%99%D7%91%D7%95%D7.%90%D7%A0%D7%99%D7%9D %D7%9C%D7%9E%D7%AA%D7%A0%D7%95%D7%AA &meta= &aq=f&oq=

Те, которые не отображаются должным образом (если я не использую Microsoft.JScript.GlobalObject.unescape), выглядят следующим образом: http://www.google.co.il/custom?q=%FA%EE%E9%F8 - %F6% E9%E9 %F8%EB%E1&client=pub-0385896995839253&forid=1

Я могу понять, что вторая строка содержит символы ISO-8859-1 и работает правильно, если не экранирована на стороне сервера, но в URL-адресе нет информации о кодировке.

поэтому я не могу различить эти два формата. или я могу? нужно ли мне?

Примечание: когда я копирую и вставляю эти URL-адреса в адресную строку браузера, браузер определяет первый как «Unicode (UTF-8)», а другой как «Windows-1255».

Спасибо Ярон


person Yaron    schedule 11.03.2010    source источник


Ответы (1)


Используйте функцию encodeURIComponent вместо функции escape.

Если вы читаете значение из коллекции Request.QueryString, оно уже декодировано, поэтому вам не следует не использовать метод HtmlDecode.

person Guffa    schedule 11.03.2010