Двухбайтовые символы в строке запроса с использованием PHP - PullRequest
0 голосов
/ 29 марта 2010

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

Ответы [ 2 ]

2 голосов
/ 30 марта 2010

Понял!

Мне нужно было убедиться, что заголовок сообщает:

header ('Content-type: text/html; charset=utf-8');

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

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

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

0 голосов
/ 30 марта 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...