Caracteres de duplo bytes em Querystring usando PHP
-
23-09-2019 - |
Pergunta
Estou tentando descobrir como criar URLs personalizados para idiomas de dois bytes.
Por exemplo, este URL da Amazon Japan tem caracteres japoneses dentro do consultor (especificamente, o caminho):
http://www.amazon.co.jp/風の谷のナウシカ-DVD-宮崎駿/dp/B00005R5J3/ref=sr_1_3?ie=UTF8&s=dvd&qid=1269891925&sr=8-3
O que eu gostaria de fazer é ter:
http://www.mysite.com/風の谷のナウシカ
ou até
http://www.mysite.com/index.php?name=風の谷のナウシカ
ser capaz de decodificar adequadamente o $GET[name]
corda.
Eu acho que tentei todo o urldecode
e utf8_decode
Possibilidades, mas eu apenas fico sem sentido em resposta.
Tudo isso funciona bem em um formulário $_POST
, mas eu preciso que esses URLs sejam enviados por e -mail ...
EDIT: Aqui está o código que estou 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 />";
}
?>
Solução
Entendi!
Eu precisava garantir que o cabeçalho estivesse relatando:
header ('Content-type: text/html; charset=utf-8');
Depois que eu fiz isso, os personagens foram interpretados corretamente.
Eu também achei isso, que é um recurso muito bom:
Outras dicas
Você já tentou ler o valor GET diretamente? Como com $_SERVER['QUERY_STRING']
ou equivalente? Tenho certeza de que o urldecode()
A função ainda tem alguns problemas, mesmo que funcione com o UTF-8 desde a versão 5.0.
este página No Php.net tem alguns comentários úteis, alguns especificamente para casos japoneses.