Проблема кодировки кодировки PHP urlencode - PullRequest
0 голосов
/ 15 февраля 2012

Я получил этот php-скрипт:

$str = "ú";
echo $str . ' -> ' . urlencode($str) . "\n" ;

Ожидаемый результат:

ú -> %FA

Ссылка: http://www.w3schools.com/tags/ref_urlencode.asp

Фактический результат

ú -> %C3%BA

Ответы [ 2 ]

4 голосов
/ 15 февраля 2012

Попробуйте это:

urlencode(utf8_decode($str));

Это должно дать вам ожидаемый результат.

2 голосов
/ 15 февраля 2012

Вы кодируете ú как UTF-8 (проверьте кодировку вашего примера кода), поэтому urlencode правильно кодирует его как %C3%BA.

Вы более или менее ссылались на это:

$str = "\xFA"; # ú in LATIN-1
echo $str . ' -> ' . urlencode($str) . "\n" ;

Что дает ожидаемый результат, независимо от того, как вы кодируете php-код / ​​-файл:

ú -> %FA

Демо , который использует этот сайтUTF-8 для хранения исходного кода.Если вы хотите, чтобы вывод отображался как LATIN-1, этот дополнительный пример сигнализирует браузеру о кодировке LATIN-1:

header('Content-Type: text/html; charset=latin-1');
$str = "\xFA"; # ú in LATIN-1
echo $str . ' -> ' . urlencode($str) . "\n" ;
...