Странная проблема с кодировкой - иврит
-
19-09-2019 - |
Вопрос
У меня есть скрипт, который отслеживает посещения и ссылки на веб-сайт.
Я отправляю 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
способ.