Закодированный 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 кодирование, если вы буквально используете "š" в файле.

Другие вопросы по тегам