Ajaxで文字化けした中国語パラメータを渡す方法の解決策 なぜかajaxはデフォルトでuft-8エンコードになっているため、gbkを使うと文字化けしやすいのですが、php ajaxの文字化けを解決する方法を紹介します。
文字化けした中国語パラメータをajax経由で渡す方法の解決策
なぜかajaxはデフォルトでuft-8エンコードになっているので、gbkを使うと文字化けしやすいのですが、PHPチュートリアルでajaxの文字化けを解決する方法をお伝えします。
中国語のパラメータを渡して、データベース チュートリアルを変更します。
<スクリプト>
var url="admin/ajaxmodify.php?"+key+"=";
url+=encodeuricomponent(encodeuricomponent(value));
xmlhttp.open("get",url,true);
xmlhttp.send(null);
スクリプト>
パラメータは中国語の encodeuricomponent です。このメソッドは 2 回呼び出す必要があります
*/関数 utf8rawurldecode ($source) {
$decodedstr = "";
$pos = 0;
$len = strlen ($source);
while ($pos $charat = substr ($source, $pos, 1);
if ($charat == '%') {
$pos++;
$charat = substr ($source, $pos, 1);
if ($charat == 'u') {
// Unicode 文字を取得しました
$pos++;
$unicodehexval = substr ($source, $pos, 4);
$unicode = hexdec ($unicodehexval);
$entity = "" . $decodedstr .= utf8_encode ($entity);
$pos += 4;
}
他に{
// エスケープされた ASCII 文字があります
$hexval = substr ($source, $pos, 2);
$decodedstr .= chr (hexdec ($hexval));
$pos += 2;
}
} その他 {
$decodedstr .= $charat;
$pos++;
}
}
$decodedstr;
を返します }
/*
注: js で文字トランスコーディングを使用する場合は、escape() の代わりに encodeuricomponent() または encodeuri() を使用することをお勧めします。その理由は、escape() は ASCII 文字を %unnnn などのコードにのみ変換するためです。utf-8 文字ライブラリなどのさらに多くの文字を使用したい場合は、encodeuricomponent() または encodeuri() を使用してコードを変換する必要があります。 %nn%nn。
*/