Закодированный URL: %9A отображается как?-diamond ... как заставить браузер правильно интерпретировать% 9A
Я генерирую URL (для диалога Facebook) из Flash:
var lvs_url = "http://www.facebook.com/dialog/feed?app_id=208524139202627&name=š š&caption=&description=&link=http://apps.facebook.com/celjska_puzzle&redirect_uri=http://apps.facebook.com/celjska_puzzle/"
var lvo_req : URLRequest = new URLRequest( lvs_url ) ;
navigateToURL( lvo_req , "_blank" );
но к тому времени, когда URL-адрес попадает в браузер, š превращаются в %9A, которые затем отображаются в виде ?-diamond на всплывающем окне в Facebook.
Тем не менее, браузер в порядке с %20
Вот закодированный URL: http://www.facebook.com/dialog/feed?app_id=208524139202627&name=%9A%20%9A&caption=&description=&link=http://apps.facebook.com/celjska_puzzle&redirect_uri=http://apps.facebook.com/celjska_puzzle/
1 ответ
Пытаться encodeURIComponent
:
var lvs_url = "http://www.facebook.com/dialog/feed?app_id=208524139202627&name="+encodeURIComponent("š š")+"&caption=&description=&link=http://apps.facebook.com/celjska_puzzle&redirect_uri=http://apps.facebook.com/celjska_puzzle/";
var lvo_req : URLRequest = new URLRequest( lvs_url ) ;
navigateToURL( lvo_req , "_blank" );
Из документов:
Создает объект URLRequest.
Если
System.useCodePage
являетсяtrue
запрос закодирован с использованием системной кодовой страницы, а не Unicode.Если
System.useCodePage
являетсяfalse
запрос закодирован с использованием Unicode, а не системной кодовой страницы.
Спецификация гласит:
Не-ASCII-символы должны сначала кодироваться в соответствии с UTF-8 [STD63], а затем каждый октет соответствующей последовательности UTF-8 должен кодироваться в процентах, чтобы быть представленными в виде символов URI.
Это означает, что "š"
должен быть закодирован как %C5%A1
в URL. Попробуйте установить System.useCodePage
в false
даже если документация неоднозначна, потому что кодирование с использованием Unicode не обязательно означает UTF-8
,
Я должен также упомянуть, что ваш файл должен быть сохранен в UTF-8
кодирование, если вы буквально используете "š"
в файле.