Двухбайтовые символы в строке запроса с использованием PHP

StackOverflow https://stackoverflow.com/questions/2540800

Вопрос

Я пытаюсь понять, как создавать персонализированные 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');

Как только я это сделал, персонажи были интерпретированы правильно.

Я также нашел это, это очень хороший ресурс:

http://www.phpwact.org/php/i18n/utf-8

Другие советы

Вы пытались прочитать значение GET напрямую?Как и в случае с $_SERVER['QUERY_STRING'] или эквивалент?Я почти уверен, что urldecode() Функция по-прежнему имеет некоторые проблемы, хотя она должна работать с UTF-8, начиная с версии 5.0.

Этот страница на php.net есть несколько полезных комментариев, некоторые специально для японского языка.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top