PHP kullanarak sorgu dizesi çift bayt karakterler

2 Cevap php

Ben çift bayt diller için kişiselleştirilmiş URL'ler oluşturmak için nasıl anlamaya çalışıyorum.

Örneğin, Amazon Japonya bu url sorgu dizesi (özellikle yol) içinde Japonca karakterler var:

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

Ne yapmak istiyorum var ise:

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

ya da

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

doğru $GET[name] dizesini çözmesi mümkün olacak.

Ben urldecode ve utf8_decode tüm olasılıkları denedim düşünüyorum, ama sadece tepki anlamsız olsun.

Bu, tüm bir form $_POST olarak çalışıyor, ama ben postayla olmak için bu adresler gerekiyor ...

EDIT: İşte kullanıyorum kodu:

<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 Cevap

Anladım!

Eminim başlığı rapor edildi yapmak için gerekli:

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

Ben bir kez yaptım, karakterler düzgün yorumlanmıştır.

Ben de çok iyi bir kaynak olduğunu, bu bulundu:

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

Doğrudan GET değer okuma denediniz mi? $_SERVER['QUERY_STRING'] veya eşdeğeri gibi? Ben sürüm 5.0 beri UTF-8 ile çalışmak gerekiyordu olsa bile, urldecode() işlev hala bazı sorunları olduğunu eminim.

Bu page üzerinde php.net de özellikle Japon durumlarda bazı yararlı yorumlar, bazı vardır.