データベースCRUDでの中国語エンコーディングの問題


数日前の必死のcodingは多くの問題に直面して、その中の1つは中国の特色のあるプログラム猿の問題--中国語の符号化の文字化の文字化です.
私が書いたDAOモジュールをCURDをテストすると、データベースは正常に実行されますが、すべてのフィールドの中国語はすべて文字化けしています.eclipseプロジェクトのデフォルト符号化をUTF-8に変更し、データベースのテーブルの符号化を設定しようとしました.
alter table type character set utf8;

何の役にも立たない.
自分はかつてこのような情況に出会ったことがあって、しかし整理したことがなくて、使う時になって、眉の頭がしわになって、計り知れません.
30分も振り回して、やっと解決策を見つけた.
ここでさっきの囧を忘れましょう.咳咳、私たちがデータベース表を作り始めたばかりのことに参加してください.
私たちはそうすべきです.
CREATE TABLE jingdian(id INT PRIMARY KEY AUTO_INCREMENT,  businessId INT, businessName VARCHAR(200), city VARCHAR(100), longitude DOUBLE, latitude DOUBLE, hashCode VARCHAR(200) ) default charset = utf8;

テーブルの作成の最後にデフォルトの文字セットの定義を追加します.しかし、なぜテーブルの文字セット操作を変更したときに成功しなかったのか、少し分かりにくいです.私が推測したのは、以前のデータベースの符号化のデフォルトが別のタイプであったためであり、utf-8符号化のデータを格納したときにMYSQLのデフォルト符号化データと思われて誤って復号され、乱符号化が発生したが、私が表の文字符号化を修正したとき、MYSQLはこれら本来乱れていた文字を何らかの符号化変換方法でMYSQLの元のデフォルト符号化でUTF-8に変換し、誤りに誤りを加えた.具体的な原因はまだ考察しなければならないが,ここは私の推測にすぎない.
それからデータベースのアクセスurlもパラメータを指定する必要があります.これは私が普段注意していない方法で、具体的なデータベースインタラクティブコンポーネントの使用にかかわる必要はありません.かなり汎用性がありますが、ここでは以下のようにお勧めします.
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf8 
username=root
password=

私は他の人のブログを見て、他の解決策があるようです.ここではいくつかの比較的はっきりしたものを探しました.
1.  SET NAMES 'utf8'; 
次の3つの命令に相当します.
SET character_set_client = utf8; 
SET character_set_results = utf8; 
SET character_set_connection = utf8;

2.データベースの作成
mysql> create database name character set utf8;

3.テーブルの作成
CREATE TABLE `type` ( 
`id` int(10) unsigned NOT NULL auto_increment, 
`flag_deleted` enum('Y','N') character set utf8 NOT NULL default 'N', 
`flag_type` int(5) NOT NULL default '0', 
`type_name` varchar(50) character set utf8 NOT NULL default '', 
PRIMARY KEY (`id`) 
)  DEFAULT CHARSET=utf8;

4.utf 8にデータベースを変更する.
mysql> alter database name character set utf8;

5.表のデフォルト設定を変更するutf 8.
mysql> alter table type character set utf8;

6.フィールド用utf 8の変更
mysql> alter table type modify type_name varchar(50) CHARACTER SET utf8;