caratteri a doppio byte in querystring utilizzando PHP
-
23-09-2019 - |
Domanda
Sto cercando di capire come creare URL personalizzati per lingue a doppio byte.
Ad esempio, questo URL da Amazon Giappone ha i caratteri giapponesi nel querystring (in particolare, il percorso):
http://www.amazon.co.jp/風の谷のナウシカ-DVD-宮崎駿/dp/B00005R5J3/ref=sr_1_3?ie=UTF8&s=dvd&qid=1269891925&sr=8-3
Quello che vorrei fare è avere:
http://www.mysite.com/風の谷のナウシカ
o anche
http://www.mysite.com/index.php?name=風の谷のナウシカ
essere in grado di decodificare correttamente la stringa $GET[name]
.
credo di aver provato tutti i urldecode
e utf8_decode
possibilità, ma ottengo solo incomprensibile in risposta.
Il tutto funziona bene in una forma $_POST
, ma ho bisogno di questi URL essere inviabile per email ...
EDIT: Ecco il codice che sto usando:
<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 />";
}
?>
Soluzione
Ci sono!
avevo bisogno di assicurarsi che il colpo di testa viene segnalando:
header ('Content-type: text/html; charset=utf-8');
Una volta che ho fatto, i personaggi sono stati interpretati correttamente.
Ho trovato anche questo, che è una risorsa molto buona:
Altri suggerimenti
Hai provato a leggere direttamente il valore GET? Come con $_SERVER['QUERY_STRING']
o equivalente? Sono abbastanza sicuro che la funzione urldecode()
ha ancora alcuni problemi, anche se si suppone di lavorare con UTF-8 a partire dalla versione 5.0.
Questa href="http://www.php.net/manual/en/function.urldecode.php" rel="nofollow pagina sopra a php.net ha alcuni utili commenti , un po 'particolare per i casi giapponesi.