Кириллические URL в Google Chrome?

У меня проблемы с кириллическими URL-адресами на моем сайте. Ну, я меняю свои URL-адреса с помощью Javascript (jQuery), и кириллические символы отлично работают в каждом браузере, а не в Google Chrome, где показаны три юникода. Я думал, что URL-адреса не были декодированы, поэтому я попробовал одну функцию Javascript, чтобы декодировать их в нормальный формат, но ничего не изменилось. Есть идеи, как решить эту проблему?

Мой URL-адрес выглядит примерно так:

http://site.com/index.html#начало

Но в GC это показано так:

http://site.com/index.html#%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D0%BE

Любая помощь?


person yep123    schedule 02.04.2011    source источник
comment
Это просто закодировано. Если вы скопируете этот URL (из GC) в адресную строку любого другого браузера, он все равно будет работать нормально. Обратите внимание на это, например, blooberry.com/indexdot/html/topics/urlencoding.htm   -  person Wh1T3h4Ck5    schedule 02.04.2011
comment
Ну да, я видел это и читал обо всех этих символах, которые нельзя распечатать, но есть сайты, которые я видел, на которых используются кириллические символы. Например, этот: mallgabrovo.bg/магазини-и-услуги.html   -  person yep123    schedule 02.04.2011
comment
Выполняется загрузка GC ... В FF это нормально (даже FF показывает URL-адрес, закодированный в "исходном коде"). Я думаю, что это способ, которым GC показывает URL-адреса с неанглийскими символами, но я скоро попробую его в GC.   -  person Wh1T3h4Ck5    schedule 02.04.2011
comment
да, теперь я вижу в GC, что этот болгарский сайт имеет некодированные URL. Какой серверный язык вы используете? PHP?   -  person Wh1T3h4Ck5    schedule 02.04.2011
comment
Кстати, не могли бы вы опубликовать небольшой фрагмент исходного текста документа (HTML), где у вас есть ссылки с кириллическими символами в нем (например, тег HTML ‹a›)?   -  person Wh1T3h4Ck5    schedule 03.04.2011


Ответы (4)


Это не только Chrome, если вы вставляете URl напрямую (или в виде закладки ..) в IE8, это также может вызвать проблемы.

URL-адрес (по спецификации) не может содержать кириллицу. Раньше они у нас были, но избавились от них, слишком много проблем.

см. также: URL-адрес с кириллической строкой запроса не работает в IE (но работает в Firefox)

person Pleun    schedule 02.04.2011
comment
Понятно ... Может, мне придется обойтись без кириллицы в своих URL из-за всех этих проблем с ней, даже если бы я действительно хотел ее иметь. - person yep123; 02.04.2011
comment
В первоначальном виде не может (по спецификации). Но каждый символ может быть частью URL-адреса, если он правильно закодирован (например, арабский, китайский, греческий, японский и т. Д.). Некоторые браузеры автоматически переписывают запрос с кодировкой URL в исходную форму (большинство браузеров нового поколения), даже если вы помещаете его (в адресную строку) в виде строки с процентной кодировкой. Иногда мы ничего не можем сделать, чтобы исправить некоторые проблемы, вызванные конкретным браузером. - person Wh1T3h4Ck5; 03.04.2011
comment
@ Wh1T3h4Ck5: Я знаю. Вы пытаетесь дать ответ на вопрос, который я связал, и мы обсудим его дальше. Я знаю по опыту, что это доставляет массу проблем .. - person Pleun; 03.04.2011

Попробуйте использовать такие функции, как rawurlencode () и rawurldecode ().

Пример:

   $url = "http://site.com/index.html";
   $url_suffix = "#начало";

   $url_enc = $url . rawurlencode($url_suffix);
   echo "$url_enc<br />";

   $url_dec = rawurldecode($url_enc);
   echo "$url_dec<br />";

Вывод (в браузере):

http://site.com/index.html%23%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D0%BE
http://site.com/index.html#начало

rawurlencode () и rawurldecode () безопасны, если вы попытаетесь отправить параметр, такой как адрес электронной почты, с помощью GET (urlencode () и urldecode () нет).

Также настройте свою страницу мета вот так

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
person Wh1T3h4Ck5    schedule 02.04.2011

В Chrome для меня работает decodeURIComponent (собственная функция) при получении URL-адреса. Что-то вроде этого:

decodeURIComponent (window.location.href)

Тогда переход по закодированному URL-адресу будет работать.

person Rittmann    schedule 07.08.2014

Google Chrome всегда кодирует его URL-адреса, но не пропускает их.
Попробуйте: COPY URL extension
Вы можете открыть исходный код и посмотреть, как он работает.

person ostapische    schedule 07.08.2014