I'm having troubles with cyrillic URLs in my site. Well, I change my URLs with Javascript (jQuery) and cyrillic characters work fine in every browser instead Google Chrome, where it's shown thir unicodes. I thought that the URLs wasnt decoded, so I tried one Javascript function to decode them to a normal format but nothing has changed. So any ideas how to solve this problem?
My URL is something like that:
http://site.com/index.html#начало
But in GC is sho开发者_StackOverflow社区wn like that:
http://site.com/index.html#%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D0%BE
Any help?
It is not only Chrome, if you would paste your URl directly (or as a bookmark..) into IE8 it can also cause problems.
An URL (by specification) cannot contain cyrillics. We used to have them but got rid off them, too many issues.
see also: URL with Cyrrilic querystring not working in IE (but working in Firefox)
Try using functions like rawurlencode() and rawurldecode().
Example:
$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 />";
Output (In browser):
http://site.com/index.html%23%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D0%BE
http://site.com/index.html#начало
rawurlencode() and rawurldecode() are safe if you try send parameter like email address using GETs (urlencode() and urldecode() are not).
Also set your page meta like this
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
In Chrome, what works for me is use decodeURIComponent (native function) when getting the url. Something like this:
decodeURIComponent(window.location.href)
Going to an encoded url will just work then.
Google Chrome always encode his urls, but it does not let it slip.
Try this out:
COPY URL extension
You can open source code and see how it works.
精彩评论