Странная проблема кодирования - иврит - PullRequest
0 голосов
/ 12 марта 2010

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

Я отправляю 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»

Thanx Ярон

1 Ответ

0 голосов
/ 12 марта 2010

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

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

...