ホームページ  >  記事  >  バックエンド開発  >  PHP 中国語文字化け解決策、_PHP チュートリアル

PHP 中国語文字化け解決策、_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:05:26844ブラウズ

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;
?>

この機能は皆さんに推奨されていますが、使用後に変換することはできず、エラーも文字も変換されません。

2. 別のアプローチを取ると、誰もが非効率であると疑う機能がもう 1 つありますが、いずれにせよ、最初にそれを実装してから、他の 3 つを検討してください

コードをコピーします コードは次のとおりです: //関数が利用可能かどうかを確認します 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の中国語文字化けに関する記事の紹介でした。皆さんに気に入っていただければ幸いです。

www.bkjia.com本当http://www.bkjia.com/PHPjc/963843.html技術記事 PHP の中国語コードの文字化け解決策、中国語の文字化けは本当に悲しいこと、JAVA は漢字が嫌い、PHP は中国語の文字が嫌い; Java の文字化けは、どこでも Spring によって提供されるフィルターを使用して最終的にフィルタリングされます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。