MySqlデータベースを変更してUTF 8に符号化して文字化の問題を避ける

3341 ワード

mysqlはデータベースを作成する際に符号化を指定することが重要で、多くの開発者がデフォルト符号化を使用しているが、乱符号化の問題は防げない.データベースの符号化を設定することで、エクスポートに注ぐ文字化けしの問題を大幅に回避できます.
ウェブページデータは一般にUTF 8符号化を採用し、データベースはデフォルトでlatinである.データベースのデフォルトのエンコード方式をUTF 8に変更することで、データベース作成時の設定を減らすことができ、不注意による文字化の問題を最小限に抑えることができます.
私たちが従う基準は、データベース、テーブル、フィールド、ページまたはテキストの符号化を統一することです.
コマンドでデータベースの現在のエンコードを表示できます:mysql>SHOW VARIABLES LIKE'character%';
多くの対応がlatin 1であることが分かったが,我々の目標は,次回このコマンドを使用するときにlatin 1をUTF 8に置き換えることである.
フェーズ1:
mysql設定符号化コマンド
 
  
SET character_set_client = utf8;
SET character_set_connection = utf8;
SET character_set_database = utf8;
SET character_set_results = utf8;
SET character_set_server = utf8;

そしてmysql>SHOW VARIABLES LIKE'character%';すべてutf 8になるのが見えます.
しかし、これはただの仮象です.
この方法は、データベース・サービスを再起動すると無効になる現在の状態でのみ有効です.
だから文字化けしないには修正するしかないmy.iniファイル、
myからini手(ラベルの下にない追加、ある修正)
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
以上の3つのsectionにはdefault-character-set=utf 8が追加されていますが、普段はmysqldの1つしか追加されていないかもしれません.
mysqlを再起動し、実行します.
mysql> SHOW VARIABLES LIKE 'character%';
すべてのValueアイテムがutf 8であることを確認します.
でも憎らしいことがまた来て、
|character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_システム|utf 8注意この構成|character_set_server|latin 1がUTF 8インタラクションに設定できない場合も文字化けします.
第2段階:次のようなものを見つける
X:\%path%\MySQL\MySQL Server 5.0\bin\MySQLInstanceConfig.exe
設定を再起動し、デフォルトの符号化をutf 8に設定.これで私たちが望む効果を達成することができます.
mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\|
+--------------------------+---------------------------------------------------------+
8 rows in set
その他の注意事項:
1、表を建てる時utf 8をプラスして、表のフィールドのCollationはプラスしてもプラスしないことができて、プラスしない時デフォルトはutf 8_ですgeneral_ci了.
 
  
CREATE TABLE `tablename4` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`varchar1` varchar(255) DEFAULT NULL,
`varbinary1` varbinary(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

2、ホームページxxx.php/jsp保存時にutf 8符号化を選択し、ヘッダーに
header('conten-type:text/html;charset=utf-8');
CRUD操作を実行する前に
mysql_query("set names utf8");
-------------------------
接続データベースのエンコーディング
jdbc:mysql://アドレス:3306/データベース名?characterEncoding=utf8
-------------------------
JAvaの共通符号化UTF-8;GBK;GB2312;ISO-8859-1;
mysqlデータベースのエンコードutf 8に対応します.gbk;gb2312;latin1