PHP は自動的に文字セットを認識し、トランスコーディングを完了します
というのも、私が使用している文字エンコードは一般的にUTF-8エンコードなのですが、相手のブログがgb2312エンコードを使用している場合、POST時に文字化けが発生します(相手がエンコードを変換してからPOSTしない限り)。相手が UTF-8 エンコードを使用する必要があるかどうかを保証できない場合は、自分でエンコードのチェックと変換を行う必要があります。
gb2312/gbk は中国語では 2 バイトですが、utf-8 の中国語文字も同様に 3 バイトであるため、原理は非常に単純です。値の範囲があります。エンコードの状況に関係なく、英語は 128 未満であり、占有するのは 1 バイトのみです (全角を除く)。
ファイル形式でのエンコードチェックの場合、utf-8 の BOM 情報を直接確認することもできます。この点については、TP ツールボックスのエンコード変換機能を参照してください。 AppCodingSwitch クラスのコメント。
早速、この関数を使用して文字列をチェックし、トランスコードしてみましょう。ファイル検査とトランスコーディング
[php]
関数safeEncoding($string, $outEncoding = 'UTF-8') {
$encoding = "UTF-8"
for ($i = 0; $i
if (ord($string{$i})
if ((ord($string{$i}) & 224) == 224) {
$char = $string{++$i};
if ((ord($char) & 128) == 128) {
to s ’to s to s' out out out out out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Out Outを使用
$char = $string{++$i};
$encoding = "UTF-8";
休憩。
}
}
}
if ((ord($string{$i}) & 192) == 192) {
through ’ ’s ’ through ’ s ’ use using out out out through out out out out out out out of いつ ----
$char = $string{++$i};
if ((ord($char) & 128) == 128) {
’ s ’ ’s ’ s ’ up ’ it ’ s を通じて 一緒に一緒に一緒に一緒に一緒に 's-
$encoding = "GB2312";
休憩。
}
}
}
if (strtoupper($encoding) == strtoupper($outEncoding))
$string;
その他
returniconv($encoding, $outEncoding, $string);
}
http://www.bkjia.com/PHPjc/477773.html
www.bkjia.com
本当
http://www.bkjia.com/PHPjc/477773.html
技術記事
PHPが使用する文字エンコードは一般的にUTF-8エンコードなので、PHPは自動的に文字セットを認識してトランスコードを完了しますが、相手のブログがgb2312エンコードを使用している場合、POSTが文字化けしてしまいます(ただし...
)