ホームページ データベース mysql チュートリアル Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别总结_MySQL

Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别总结_MySQL

Jun 01, 2016 pm 01:17 PM
中国語

一、官方文档说明
下面摘录一下Mysql 5.1中文手册中关于utf8_unicode_ci与utf8_general_ci的说明:

     当前,utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法。一些字符还是不能支持。并且,不能完全支持组合的记号。这主要影响越南和俄罗斯的一些少数民族语言,如:Udmurt 、Tatar、Bashkir和Mari。

     utf8_unicode_ci的最主要的特色是支持扩展,即当把一个字母看作与其它字母组合相等时。例如,在德语和一些其它语言中‘ß'等于‘ss'。

     utf8_general_ci是一个遗留的 校对规则,不支持扩展。它仅能够在字符之间进行逐个比较。这意味着utf8_general_ci校对规则进行的比较速度很快,但是与使用utf8_unicode_ci的 校对规则相比,比较正确性较差)。

     例如,使用utf8_general_ci和utf8_unicode_ci两种 校对规则下面的比较相等:
     Ä = A
     Ö = O
     Ü = U

     两种校对规则之间的区别是,对于utf8_general_ci下面的等式成立:
     ß = s

     但是,对于utf8_unicode_ci下面等式成立:
     ß = ss

     对于一种语言仅当使用utf8_unicode_ci排序做的不好时,才执行与具体语言相关的utf8字符集 校对规则。例如,对于德语和法语,utf8_unicode_ci工作的很好,因此不再需要为这两种语言创建特殊的utf8校对规则。

     utf8_general_ci也适用与德语和法语,除了‘ß'等于‘s',而不是‘ss'之外。如果你的应用能够接受这些,那么应该使用utf8_general_ci,因为它速度快。否则,使用utf8_unicode_ci,因为它比较准确。

如果你想使用gb2312编码,那么建议你使用latin1作为数据表的默认字符集,这样就能直接用中文在命令行工具中插入数据,并且可以直接显示出来.而不要使用gb2312或者gbk等字符集,如果担心查询排序等问题,可以使用binary属性约束,例如:
create table my_table ( name varchar(20) binary not null default '')type=myisam default charset latin1;

二、简短总结
utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。
utf8_general_ci校对速度快,但准确度稍差。
utf8_unicode_ci准确度高,但校对速度稍慢。

如果你的应用有德语、法语或者俄语,请一定使用utf8_unicode_ci。一般用utf8_general_ci就够了,到现在也没发现问题。。。

三、详细总结

1、对于一种语言仅当使用utf8_unicode_ci排序做的不好时,才执行与具体语言相关的utf8字符集校对规则。例如,对于德语和法语,utf8_unicode_ci工作的很好,因此不再需要为这两种语言创建特殊的utf8校对规则。
2、utf8_general_ci也适用与德语和法语,除了‘?'等于‘s',而不是‘ss'之外。如果你的应用能够接受这些,那么应该使用 utf8_general_ci,因为它速度快。否则,使用utf8_unicode_ci,因为它比较准确。

用一句话概况上面这段话:utf8_unicode_ci比较准确,utf8_general_ci速度比较快。通常情况下 utf8_general_ci的准确性就够我们用的了,在我看过很多程序源码后,发现它们大多数也用的是utf8_general_ci,所以新建数据 库时一般选用utf8_general_ci就可以了

四、如何在MySQL5.0中使用UTF8
在 my.cnf中增加下列参数

[mysqld]
init_connect='SET NAMES utf8′
default-character-set=utf8
default-collation = utf8_general_ci

执行查询 mysql> show variables; 相关如下:
character_set_client | utf8
character_set_connection | utf8
character_set_database | utf8
character_set_results | utf8
character_set_server | utf8
character_set_system | utf8

collation_connection | utf8_general_ci
collation_database | utf8_general_ci
collation_server | utf8_general_ci

个人见解,对于数据库的使用,utf8 - general 已经足够的准确,并且相较与  utf8 - unicode速度上有优势,固可放心采用之


附1:旧数据升级办法
以原来的字符集为latin1为例,升级成为utf8的字符集。原来的表: old_table (default charset=latin1),新表:new_table(default charset=utf8)。
第一步:导出旧数据
mysqldump --default-character-set=latin1 -hlocalhost -uroot -B my_db --tables old_table > old.sql
第二步:转换编码(类似unix/linux环境下)
iconv -t utf-8 -f gb2312 -c old.sql > new.sql
或者可以去掉 -f 参数,让iconv自动判断原来的字符集
iconv -t utf-8 -c old.sql > new.sql
在这里,假定原来的数据默认是gb2312编码。
第三步:导入
修改old.sql,在插入/更新语句开始之前,增加一条sql语句: "SET NAMES utf8;",保存。
mysql -hlocalhost -uroot my_db 大功告成!!

附2:支持查看utf8字符集的MySQL客户端有
1.) MySQL-Front,据说这个项目已经被MySQL AB勒令停止了,不知为何,如果国内还有不少破解版可以下载(不代表我推荐使用破解版 :-P)。
2.) Navicat,另一款非常不错的MySQL客户端,汉化版刚出来,还邀请我试用过,总的来说还是不错的,不过也需要付费。
3.) PhpMyAdmin,开源的php项目,非常好。
4.) Linux下的终端工具(Linux terminal),把终端的字符集设置为utf8,连接到MySQL之后,执行 SET NAMES UTF8; 也能读写utf8数据了。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Call of Duty: Warzone モバイル ゲームで中国語を設定する方法 Call of Duty: Warzone モバイル ゲームで中国語を設定する方法 Mar 22, 2024 am 08:41 AM

Call of Duty Warzone は新しくリリースされたモバイル ゲームです。多くのプレイヤーは、このゲームの言語を中国語に設定する方法に非常に興味があります。実際、それは非常に簡単です。プレイヤーは中国語の言語パックをダウンロードするだけで、その後、次のことができます詳しい内容はこちらの中国語設定方法紹介で解説していますので、一緒に見ていきましょう。モバイル ゲーム Call of Duty: Warzone に中国語を設定する方法 1. まずゲームに入り、インターフェースの右上隅にある設定アイコンをクリックします。 2. 表示されるメニューバーで、[ダウンロード]オプションを見つけてクリックします。 3. このページの[SIMPLIFIEDCHINESE](簡体字中国語)を選択して、簡体字中国語のインストールパッケージをダウンロードします。 4. 設定に戻ります

VSCode を使用した中国語のセットアップ: 完全ガイド VSCode を使用した中国語のセットアップ: 完全ガイド Mar 25, 2024 am 11:18 AM

中国語での VSCode セットアップ: 完全ガイド ソフトウェア開発では、Visual Studio Code (略して VSCode) が一般的に使用される統合開発環境です。中国語を使用する開発者は、VSCode を中国語インターフェイスに設定すると、作業効率が向上します。この記事では、VSCode を中国語インターフェイスに設定する方法を詳しく説明し、具体的なコード例を示す完全なガイドを提供します。ステップ 1: 言語パックをダウンロードしてインストールします。VSCode を開いた後、左側の

PHP Dompdf で中国語の文字を正しく表示する方法 PHP Dompdf で中国語の文字を正しく表示する方法 Mar 05, 2024 pm 01:03 PM

PHPDompdf で中国語の文字を正しく表示する方法 PHPDompdf を使用して PDF ファイルを生成する場合、中国語の文字化けの問題がよく発生します。これは、Dompdf がデフォルトで使用するフォント ライブラリに中国語の文字セットが含まれていないためです。中国語の文字を正しく表示するには、Dompdf のフォントを手動で設定し、中国語の文字をサポートするフォントを必ず選択する必要があります。この問題を解決するための具体的な手順とコード例をいくつか示します。 ステップ 1: 中国語フォント ファイルをダウンロードします。

Excelのテーブルに中国語を表示するように設定するにはどうすればよいですか? Excel切り替え中国語操作チュートリアル Excelのテーブルに中国語を表示するように設定するにはどうすればよいですか? Excel切り替え中国語操作チュートリアル Mar 14, 2024 pm 03:28 PM

Excelスプレッドシートは現在多くの人が使っているオフィスソフトの一つですが、パソコンがWin11なので英語のインターフェースが表示されていて、中国語のインターフェースに切り替えたいけど操作方法が分からないという方もいらっしゃいます。この問題を解決するには、この問題エディターがすべてのユーザーの質問に答えるためにここにあります。今日のソフトウェア チュートリアルで共有されるコンテンツを見てみましょう。 Excel を中国語に切り替えるためのチュートリアル: 1. ソフトウェアを起動し、ページ上部のツールバーの左側にある [ファイル] オプションをクリックします。 2. 以下の選択肢から「オプション」を選択します。 3. 新しいインターフェースに入ったら、左側の「言語」オプションをクリックします。

PHP Dompdf で中国語の文字化けを修正する効果的な方法 PHP Dompdf で中国語の文字化けを修正する効果的な方法 Mar 05, 2024 pm 04:45 PM

タイトル: PHPDompdf で中国語の文字化けを修復する効果的な方法. PHPDompdf を使用して PDF ドキュメントを生成する場合、中国語の文字化けは一般的な問題です。この問題は通常、Dompdf がデフォルトで中国語の文字セットをサポートしていないため、中国語のコンテンツが正しく表示されないことが原因で発生します。この問題を解決するには、PHPDompdf の中国語文字化け問題を解決するいくつかの効果的な方法を講じる必要があります。 1. カスタム フォント ファイルを使用する Dompdf の中国語文字化けの問題を解決する効果的な方法は、

Windows 7の言語を中国語に設定する方法 Windows 7の言語を中国語に設定する方法 Dec 21, 2023 pm 10:07 PM

友人の中には、システムをインストールするときに誤って英語に設定してしまう人もおり、その結果、すべてのインターフェイスが英語に変更され、理解できなくなります。実はコントロールパネルで言語を設定して中国語に変更することができるので、その変更方法を見てみましょう。 Win7 で言語を中国語に変更する方法 1. まず画面の左下隅にあるボタンをクリックし、[コントロール パネル] を選択します。 2. [時計、言語、および地域] で [表示言語の変更] を見つけます。 3. 「」をクリックします。以下の「English」を選択して、ドロップダウン メニューから簡体字中国語を選択します。 4. 確認後、「今すぐログオフ」をクリックしてログアウトし、コンピュータを再起動します。 5. 帰ってきてから

wwe2k24には中国語が登場しますか? wwe2k24には中国語が登場しますか? Mar 13, 2024 pm 04:40 PM

『WWE2K24』はVisual Conceptsが制作し、2024年3月9日に正式リリースされたレーシングスポーツゲームです。このゲームは非常に高く評価されており、多くのプレイヤーが中国語版がリリースされるかどうかに熱心に興味を持っています。残念ながら、今のところ「WWE2K24」は中国語版をまだローンチしていない。 wwe2k24 は中国語になりますか? 回答: 中国語は現在サポートされていません。 Steam中国地域におけるWWE2K24の標準版の価格は199元、デラックス版は329元、記念版は395元です。ゲームには比較的高い構成要件があり、プロセッサ、グラフィックス カード、または実行メモリに関して特定の基準があります。公式推奨構成と最小構成の紹介:

PHPでtxtファイルを書く際の中国語の文字化けを解決するためのヒント PHPでtxtファイルを書く際の中国語の文字化けを解決するためのヒント Mar 27, 2024 pm 01:18 PM

PHP で書かれた txt ファイルの中国語文字化けを解決するヒント. インターネットの急速な発展に伴い、PHP は広く使用されているプログラミング言語として、ますます多くの開発者に使用されています。 PHP 開発では、中国語のコンテンツを記述する txt ファイルなどのテキスト ファイルの読み取りと書き込みが必要になることがよくあります。ただし、エンコード形式の問題により、書かれた中国語が文字化けして表示されることがあります。この記事では、PHPでtxtファイルに書き込まれた中国語の文字化けを解決するテクニックと、具体的なコード例を紹介します。 PHP、テキストの問題分析

See all articles