Двухбайтовые символы в строке запроса с использованием PHP
-
23-09-2019 - |
Вопрос
Я пытаюсь понять, как создавать персонализированные URL-адреса для двухбайтовых языков.
Например, этот URL-адрес из Amazon Japan содержит японские символы в строке запроса (в частности, путь):
http://www.amazon.co.jp/風の谷のナウシカ-DVD-宮崎駿/dp/B00005R5J3/ref=sr_1_3?ie=UTF8&s=dvd&qid=1269891925&sr=8-3
То, что я хотел бы сделать, это иметь:
http://www.mysite.com/風の谷のナウシカ
или даже
http://www.mysite.com/index.php?name=風の谷のナウシカ
уметь правильно декодировать $GET[name]
нить.
Я думаю, что перепробовал все urldecode
и utf8_decode
возможно, но получаю в ответ только тарабарщину.
Все это отлично работает в форме $_POST
, но мне нужно, чтобы эти URL-адреса можно было отправить по электронной почте...
РЕДАКТИРОВАТЬ:Вот код, который я использую:
<p>Original: <?= $_GET[str]; ?>
<br>Decode: <?= urldecode($_GET[str]); ?>
<br>Decode querystring: <?= urldecode($_SERVER[QUERY_STRING]); ?>
<p>
<?
while (list($var,$value) = each ($_SERVER)) {
echo "$var => $value <br />";
}
?>
Решение
Понятно!
Мне нужно было убедиться, что заголовок сообщает:
header ('Content-type: text/html; charset=utf-8');
Как только я это сделал, персонажи были интерпретированы правильно.
Я также нашел это, это очень хороший ресурс:
Другие советы
Вы пытались прочитать значение GET напрямую?Как и в случае с $_SERVER['QUERY_STRING']
или эквивалент?Я почти уверен, что urldecode()
Функция по-прежнему имеет некоторые проблемы, хотя она должна работать с UTF-8, начиная с версии 5.0.
Этот страница на php.net есть несколько полезных комментариев, некоторые специально для японского языка.