2012-02-15 3 views
0

Я получил этот скрипт:PHP проблема кодирования UrlEncode кодировок

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

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

ú -> %FA 

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

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

ú -> %C3%BA 
+0

Какая у вас проблема? Вы думаете, что пример лжет? – hakre

+2

[Не верьте никому, о чем рассказывают w3schools] (http://w3fools.com/) – DaveRandom

+0

Я ожидаю, что thar urlencode ('ú') вернет% FA вместо% C3% BA – texai

ответ

4

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

urlencode(utf8_decode($str)); 

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

2

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

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

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

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

ú -> %FA 

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

header('Content-Type: text/html; charset=latin-1'); 
$str = "\xFA"; # ú in LATIN-1 
echo $str . ' -> ' . urlencode($str) . "\n" ; 
Смежные вопросы