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

PHP および MYSQL での UTF8 エンコーディングの中国語ソート例、_PHP チュートリアル

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

PHP および MYSQL での UTF8 エンコーディングの中国語ソート例、

この記事の例では、PHP および MYSQL における UTF8 エンコーディングの中国語のソート方法を説明し、参考のために皆さんと共有します。具体的な実装方法は以下の通りです

一般的に、中国語には 3 つの並べ替え方法があります:

1. ピンインに従って並べ替えます。 2. ストロークに従って並べ替えます。 3. 部首に従って並べ替えます。

システムのデフォルトのソート方法はピンインソートであり、弊社でもよく使用されています。以下はピンインによるソートです

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

コードをコピーします コードは次のとおりです:function utf8_array_asort(&$array)
{
if(!isset($array) || !is_array($array))
{
false を返します;
}
foreach($array as $k=>$v)
{
$array[$k] = iconv('UTF-8', 'GBK//IGNORE',$v);
}
並べ替え($array);
foreach($array as $k=>$v)
{
$array[$k] = iconv('GBK', 'UTF-8//IGNORE', $v);
}
true を返します;
}

2. MySQL では、フィールドのソートやクエリを行うことがよくありますが、中国語でソートや検索を行うと、漢字のソートや検索結果が間違っていることがよくあります。 この状況は MySQL の多くのバージョンで存在します。

この問題が解決されない場合、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);
この記事で説明した内容が、皆様の PHP+MySQL プログラミングに役立つことを願っています。

http://www.bkjia.com/PHPjc/897692.html

tru​​ehttp://www.bkjia.com/PHPjc/897692.html技術記事 PHP と MYSQL での UTF8 エンコーディングを使用した中国語のソートの例 この記事では、PHP と MYSQL での UTF8 エンコーディングを使用した中国語のソートの例について説明します。具体的な実装方法は以下の通りです: 1...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。