2010-03-29 2 views
0

Я пытаюсь выяснить, как создать персонализированные URL-адреса для двухбайтовых языков.Двухбайтовые символы в querystring с использованием PHP

Например, этот URL от Amazon Японии имеет японские символы в строке запроса (в частности, путь):

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=風の谷のナウシカ 

Я думаю, что я пробовал все возможности urldecode и utf8_decode, но я просто получаю тарабарщину в ответ.

Это все работает отлично в форме $_POST, но мне нужно эти UR быть отправляемыми по электронной почте ...

EDIT: Вот код, я использую:

<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 />"; 
    } 
?> 
+0

Можете ли вы показать некоторые из бреда? Вы тоже показываете в UTF-8? –

ответ

2

Получил это!

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

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

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

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

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

0

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

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