Mysql ビューのエンコード方法のトピック
1.
データベースの文字セットを表示
「character_set_%」のような変数を表示
出力:
+-------------- -- ----------+--------+
| 値 |
+------ -- ------+--------+
| 文字セット_接続 | 文字セット_データベース |
| | latin1 |
| 文字セットサーバー |
|
+----------------------+--- -- ---+
次のコーディング表と組み合わせると、現在のデータベース システムのエンコーディングがわかりました:
latin1_bin
西ヨーロッパ (多言語)、バイナリ
binary
binary
上記は私の Linux 環境です。結果のエンコーディング セットは で表示されます。現在、WIN プラットフォームで次のようなエンコード セットの結果を確認しています:
+--------------------------+---- ----+
| 値 |
+---------------+-------- +
| 文字セット_データベース |
| 文字セット_結果 |
|文字セットシステム |
+-- -- ------------------------+--------+
なぜ矛盾があるのでしょうか?私のマシンに表示されている UTF-8 は、実際には LINUX では
です。 2. コマンド
Create でデータベースの文字セットを指定します
mysql>create database mydbcharacter set utf-8 ; を使用してエンコードを変更します。 # エンコーディングを直接指定します
コマンドで直接変更します
setcharacter_set_client=utf8;
setcharacter_set_connection=utf8;
setcharacter_set_database=utf8;
setcharacter_set_results=utf8;
setcharacter_set_server=utf8;
修正後、再度クエリします
「character_set_%」のような変数を表示します。
+--------------------------+----- -- -+
| 値 |
+---------------+--------+
| 文字セット_クライアント |
| 文字セット_データベース | 文字セット_結果 | utf8 |
| 文字セットシステム |
+ ------------------------+--------+
すべての結果は UTF-8 に調整および変更されました。
変更後、select * from address_address; が文字化けしていることがわかりました。 Django も文字化けします
3. データのインポートとエクスポートの文字化けの問題を解決します
#create database nginxdjango;
# use nginxdjango;
# show variables like 'character_set_%';
#実際の印刷出力は以下の通り
+---------------+--------+
| 変数名 | +--- ------------+--------+
| 文字セットクライアント |
| |
| 文字セット_データベース |
| 文字セット_結果 |
| 文字セット_システム | ---- ----------+--------+
は依然としてラテン語でエンコードされています。
わかりました。エンコーディングを設定しました
setcharacter_set_client=utf8;
setcharacter_set_connection=utf8;
setcharacter_set_database=utf8;
setcharacter_set_results=utf8;
setcharacter_set_server=utf8;
コードをもう一度書きます。形式は次のとおりです。 : +--------------------------+----------+| 値 |+ -- ------------------------+--------+ | 文字セット_クライアント | | | 文字セットデータベース || 文字セット結果 ||
| utf8 |
+--------------------------+--------+
データインポート
source /python/django/sql/nginxdjango.sql;
nginxdjango.sql のエンコードも utf-8 形式です。
インポート後、データベースはまだ文字化けしていますが、プログラムは正常に実行されます。
MySQL 文字セットエンコーディングの種類
gb2312_chinese_ci と gbk_chinese_ci および gb2312_bin、gbk_bin
gb2312_chinese_CI: 簡体字中国語のみをサポートします
gb2312_BIN: および gb 2 312_bin は gb2312_chinese_ci のサブセットであると言えます
と gb2312_BIN 大文字と小文字を区別するデータベースのエンコード形式は意味が異なります
gbk_chinese_CI 簡体字中国語と繁体字中国語をサポートします
gbk_bin 説明は gb2312_BIN と同じです gbk_chinese_CI に対応します
追記: GBK には簡体字と簡体字の 2 種類があります繁体字中国語
新しい記事:2010-03-09
MySQL のデフォルトの文字セット設定には、サーバー レベル、データベース レベル、テーブル レベルの 4 つのレベルがあります。最後のステップは、フィールドレベルの文字セットの設定です。最初の 3 つはデフォルト設定であり、フィールドが最終的にこの文字セット設定を使用することを意味するわけではないことに注意してください。したがって、show create table table; または show full field from tableName を使用して、現在のテーブルのフィールドの文字セット設定を確認することをお勧めします。
MySQL の接続環境の文字セット設定には、クライアント、接続、結果が含まれます。これらのパラメータを通じて、MySQL はクライアント ツールが使用する文字セットと結果セットがどの文字セットであるべきかを認識します。このようにして、MySQL は必要な変換を実行します。これらのパラメーターが間違っていると、当然、転送プロセス中に文字列変換エラーが発生します。基本的に文字化けの99%はこれらが原因です。
1. データベーステーブルのフィールドの文字セット設定。 show create table TableName または show full columns from tableName
mysql> show create table t1;
mysql> データベースのエンコード形式を表示します
3.データベーステストを作成します。
出力: CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 */
2. 現在の接続システムパラメータは 'char%' のような変数を表示します
mysql> like 'char% ';
1。テーブル内のこのフィールドの文字セットが中国語と互換性があることを確認してください:
big5 | Big5 繁体字中国語
gb2312 簡体字中国語
gbk中国語
ut f8 | UTF- 8 Unicode
[その他の補足]
データベースの文字セットを変更する
mysql>mydbを使用する
mysql>データベースmydbの文字セットを変更する
指定したデータベースセットの文字を作成します
mysql>データベースmydb文字セットutf-8を作成します
2010-05-02 新しく追加されました
「character_set_%」のような変数を表示します。表示されたいくつかの項目のうち、これらの3つはクライアントの影響を受けます
Character_set_client
character_set_connection
character_set_results
これら 3 つの項目は、セット名 utf8|セット名 gbk を通じて設定できます。これは、現在接続されているクライアントのエンコーディングがデータベース サーバー自体のエンコーディングに影響を与えないことを意味するだけです