Вопрос

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

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

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

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

Тот, который отображается справа, содержит такого рода символы: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&клиент=паблик-0385896995839253&forid=1

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

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

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

Спасибо Ярон

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top