ホームページ >バックエンド開発 >PHPチュートリアル >PHP および MYSQL での UTF8 中国語ソート例、_PHP チュートリアル

PHP および MYSQL での UTF8 中国語ソート例、_PHP チュートリアル

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

PHP と MYSQL での UTF8 中国語ソートの例、

1. PHP 配列で中国語ソートを使用する必要がありますが、通常は UTF8 形式のファイルを使用し、asort による直接ソートは機能しません。 gbkとgb2312を使用できます。これは、いくつかの形式のエンコードに関係があります。 gbk と gb2312 自体のコーディングはピンインでソートされています。

コードは次のようにコピーされます
function utf8_array_asort(&$array)
{
if(!isset($array) || !is_array($array))
{
return false;
}
foreach($array as $ k= >$v)
{
$array[$k] = iconv('UTF-8', 'GBK//IGNORE',$v);
}
asort($array);
foreach($array as $ k=>$v)
{
$array[$k] = iconv('GBK', 'UTF-8//IGNORE', $v);
}
return true;
}

2. MySQL では、フィールドのソートやクエリを行うことがよくありますが、中国語でソートや検索を行うと、漢字のソートや検索結果が間違っていることがよくあります。 この状況は、MySQL (www.111cn.net) の多くのバージョンで存在します。
この問題が解決されない場合、MySQL は実際に中国語を処理できなくなります。 この問題の原因は、MySQL が文字列のクエリ時に大文字と小文字を区別しないため、通常、ISO-8859 文字セットがデフォルトの文字セットとして使用され、比較プロセス中に中国語コード文字の大文字と小文字の変換が発生します。 。 この現象。
解決策:
中国語を含むフィールドに「binary」属性を追加してバイナリ比較を行います。たとえば、「name char(10)」を「name char(10)binary」に変更します。
ソース コードを使用して MySQL をコンパイルする場合、MySQL のコンパイル時に --with--charset=gbk パラメータを使用できるため、MySQL は中国語の検索と並べ替え (デフォルトは latin1) を直接サポートします。 extra-charsets=gb2312,gbk を使用して複数の文字セットを追加することもできます。
テーブル構造を変更したり、MySQL を再コンパイルしたくない場合は、クエリ ステートメントの一部で CONVERT 関数を順番に使用することもできます。たとえば

コードは次のとおりです。 コードをコピーします
select * from mytable order by CONVERT(chineseColumnName USING gbk)
from:http://www.111cn.net/phper/php-cy/67815.htm

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/895518.html技術記事 PHP および MYSQL での UTF8 中国語ソートの例: 1. PHP 配列では中国語でソートする必要がありますが、通常は UTF8 形式のファイルが使用され、asort による直接ソートは機能しません。 gbkとgb2312を使用できます。これは...
に似ています
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。