ホームページ >バックエンド開発 >PHPチュートリアル >PHP 中国語文字化け解決策、_PHP チュートリアル
中国語文字化けは本当に悲しいことです、JAVA は中国語文字を嫌います、そして PHP も中国語文字が好きではありません
;Java の文字化けコードは、Spring が提供するフィルタを使用して最終的にフィルタリングされました。実際には、どこでもフィルタリングすると速度に影響しますが、W 国ではまず考慮されません。
PHP も文字化けだらけだったとは思いませんでしたが、その兄弟の MySQL を使うとこんなにも漢字が親しみやすく、他の人と対話する上でバイブルになるとは思いませんでした。 PHP の手を SQL SERVER に拡張すると、コードが文字化けする原因は、サードパーティ システムで使用される GBK エンコーディングです。切り替えて
1. PHP 独自の変換関数 ICONV、高度な関数
コードをコピーします コードは次のとおりです:
string iconv ( string $in_charset 、 string $out_charset 、 string $str )
コードをコピーします コードは次のとおりです:
$text = "これはユーロ記号「€」です。";
echo 'オリジナル: ', $text, PHP_EOL;
echo 'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text), PHP_EOL;
echo 'IGNORE : ', iconv("UTF-8", "ISO-8859-1//IGNORE", $text), PHP_EOL;
echo 'プレーン: '、iconv("UTF-8", "ISO-8859-1", $text), PHP_EOL;
?>
コードをコピーします コードは次のとおりです:
//関数が利用可能かどうかを確認します
echo function_exists('mb_convert_encoding');
//現在のエンコーディングを検出します
echo mb_detect_encoding($val, "GBK, GB2312, UTF-8");
//エンコーディングを変換し、CP936 (つまり GBK) を UTF-8 に変換します
$v=mb_convert_encoding ($val, "UTF-8", "CP936");
結果は成功しました;
では、まずこれを使用して、データベース クエリの結果セットを変換するために、変換関数を作成します。
1. 機能「文字化けした宿敵」:
コードをコピーします
コードは次のとおりです:
// $fContents 文字列
// $from 文字列エンコーディング
// $変換するエンコーディングに
function auto_charset($fContents,$from='gbk',$to='utf-8'){
$from = strtoupper($from)=='UTF8':$from;
$to = strtoupper($to)=='UTF8':$to;
If( strtoupper($from) === strtoupper($to) || empty($fContents) || (is_scalar($fContents) && !is_string($fContents)) ){
//エンコーディングが同じであるか、文字列スカラーでない場合は変換されません
return $fContents;
}
If(is_string($fContents) ) {
If(function_exists('mb_convert_encoding')){
return mb_convert_encoding ($fContents, $to, $from);
}その他{
return $fContents;
}
}
elseif(is_array($fContents)){
foreach ( $fContents as $key => $val ) {
$ _KEY =
$fContents[$_key] = auto_charset($val,$from,$to);
if($key != $_key)
unset($fContents[$key]);
}
return $fContents;
}
他{
return $fContents;
}
}
2、使用:
コードをコピーします
コードは次のとおりです:
// クエリ結果を出力します (結果を仮定して)
$arr=array();
while($list=mssql_fetch_row($row))
{
$arr[]=$list;
}
$s=auto_charset($arr,'gbk','utf-8');
//印刷してみて、ブラウザのエンコードを UFT-8 に設定して、コード化けがないか確認してください
print_r($s);die();
以上、PHPの中国語文字化けに関する記事の紹介でした。皆さんに気に入っていただければ幸いです。