2010-03-29 2 views
0

J'essaie de comprendre comment créer des URL personnalisées pour les langues codées sur deux octets.Caractères codés sur deux octets dans la chaîne de requête utilisant PHP

Par exemple, cette URL d'Amazon Japon a des caractères japonais dans le querystring (plus précisément, le chemin):

http://www.amazon.co.jp/風の谷のナウシカ-DVD-宮崎駿/dp/B00005R5J3/ref=sr_1_3?ie=UTF8&s=dvd&qid=1269891925&sr=8-3 

Ce que je voudrais faire est d'avoir:

http://www.mysite.com/風の谷のナウシカ 

ou même

http://www.mysite.com/index.php?name=風の谷のナウシカ 

pouvoir décoder correctement la chaîne $GET[name].

Je pense que j'ai essayé toutes les possibilités urldecode et utf8_decode, mais je reçois juste du charabia en réponse.

Tout cela fonctionne très bien sous une forme $_POST, mais je dois ces urls être emailable ...

EDIT: Voici le code que je utilise:

<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

Pouvez-vous montrer quelques-uns des charabia? Faites-vous la projection en UTF-8 aussi? –

Répondre

2

L'a obtenu!

je devais assurer que l'en-tête rapportait:

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

Une fois que je l'ai fait, les personnages ont été interprétés correctement.

Je trouve également ce qui est une très bonne ressource:

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

0

Avez-vous essayé de lire la valeur GET directement? Comme avec $_SERVER['QUERY_STRING'] ou équivalent? Je suis assez sûr que la fonction urldecode() a encore quelques problèmes, même si elle est supposée fonctionner avec UTF-8 depuis la version 5.0.

Ce page sur php.net a quelques commentaires utiles, certains spécifiquement pour les cas japonais.

Questions connexes