mysql 5文字化けし問題解決策

4365 ワード

今日、プロジェクトを书く时にmysqlデータベースのデータの文字化けしの问题に出会って、ネット上から多くの方法を调べて、前后2时间振り回してやっと调整しました.調整中に発生した問題を記録します.
1.プロジェクトはSSHアーキテクチャで、最初はhibernateを呼び出すsaveメソッドに問題があったと思ってapplicationContext.を変更しました.xmlでのhibernateの構成は、
には、次の2つのプロパティが追加されています.
1 <prop key="connection.useUnicode">true</prop>

2 <prop key="connection.characterEncoding">UTF-8</prop>

しかし、テストの結果、mysqlに中国語が表示されているフィールドは依然として一連の疑問符であることが分かった.そこで,データベース自体の符号化問題の検索に着手する.
 
2.ネットで言うように、まずmysqlのプロファイルmyを修正します.ini.
クライアントで次のフィールドを変更します:default-character-set=utf 8
mysqldで次のフィールドを変更します.
character-set-server = utf8collation-server = utf8_general_ci
mysqlで次のフィールドを変更します:default-character-set=utf 8
プロファイルに上記のフィールドがない場合は、自分で追加します.修正が完了しても状況は変わっていないことに気づいた.データベースとデータベース・テーブルのプロパティのみを表示します.
 
3.コマンドラインを開き、まずshow variablesを入力して次のフィールドを表示します.
character_set_client
character_set_connection
character_set_database
character_set_server
collation_connection
collation_database
collation_server
utf 8になったのではないでしょうか.一般的にプロファイルを変更した後は、上記のフィールドは問題ありません.問題がある場合は、set@@character_のコマンドを使用します.set_xxx=utf 8で解決します.
もちろんstatusプロパティを入力して表示することもできますが、状況はそれほど悪くありません.
 
4.上記の属性が間違っていない以上、データベースとデータベーステーブルの属性を手動で変更するしかありません.
1 alter database db_name character set utf8

2 

3 alter table table_name character set utf8

 
変更後、再びinset中国語を試してみると、依然として疑問符が並んでいます.この時はもう仕方がなくて、仕方がなくて、自分でtestデータベースとtestデータベーステーブルを再構築して、そしてデータベースとテーブルを構築する時にデフォルトの符号化を設定しました:
1 create database test character set utf8;

2 use test;

3 create table test(id int primary key, name varchar(20) not null) default charset=utf8;

このとき,テストコードへのデータ挿入に成功した.だから、これまでのすべての変更は基本的に正しいことに気づきました.データベースとデータベーステーブルの変更だけがなぜか成功しなかったのではないでしょうか.mysqlについて深く研究しなければなりません.
最後に、データベースとデータベーステーブルをすべてdropして、もう一度再構築して、中国語の文字化けしの問題が解決されました.hibernateからデータベースにデータを挿入しても問題ありません.
 
5.コマンドラインに中国語が表示されると、Windowsコマンドラインのデフォルトはgbk符号化(右クリック->プロパティで表示できる)なので、set names gbkで解決する必要があります.ただし、データベース内のデータをグラフィックインタフェースで観察すると問題ありません.
 
6.最後まで解決策が見つからない場合:再ロード.しかし、ソリューションを試したことがなければ、データベースの再ロードに耐えられないのは、エンジニアとして不足しているとしか言えません.私たちに必要なのは、自分で問題を解決する能力を育成することだからです.正直に言うと、リロードは最も愚かな解決策です.
だから、ネット上で「再装えばいいじゃないか」と叫んでいる人に鼻をつくのは、他人の問題解決を指導しているわけではないからです.