utf8 が mysql にインポート時に文字化けする 質問する

utf8 が mysql にインポート時に文字化けする 質問する

UTF8でエンコードされたデータをmysqlにインポートできません。UTF8文字が壊れています。例えばノスナゲルと表示されますノスナゲル

インポートを行うために、UTF-8 でエンコードされたデータを含む SQL ダンプ ファイルを作成しました。例:

INSERT INTO `users` VALUES(1, 'Fred','Nöthnagel');

バイト列はöファイル内の c3 b6 は、vim と、次の環境変数が設定されている bash シェルで正しく表示されるため、正しいと思います。

$ env | grep -i utf
LANG=en_US.UTF-8
XTERM_LOCALE=en_US.UTF-8

mysql db は次のように作成されました。

mysql> CREATE DATABASE mydb CHARACTER SET utf8;

mysql テーブルは次のように作成されました:

CREATE TABLE `users` (  
    `id` int(11) NOT NULL AUTO_INCREMENT,  
    `first_name` varchar(30) NOT NULL,  
    `last_name` varchar(30) NOT NULL,
    PRIMARY KEY (`id`),  
    UNIQUE KEY `last_name` (`last_name`)  
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;  

次のようにダンプ ファイルをインポートします。

 mysql -u root -psecret mydb < mydump.sql

上記に何が欠けているか教えてください。

ベストアンサー1

照合順序にも関係があると思いますが、よく分かりません。私の場合は、キリル文字をサポートする必要があったので、確かに関係がありました。
これを試してみてください。私の場合はうまくいきました。

  1. ターゲットデータベースを作成する際に初期照合を設定するutf8_unicode_ci

  2. SET NAMES 'utf8' COLLATE 'utf8_unicode_ci';SQLファイルの先頭に追加します

  3. 走るmysql -u root -p --default-character-set=utf8 yourDB < yourSQLfile.sql

さらに、データベースから UTF-8 データを適切に取得するには、接続文字列も変更する必要があります。例:

mysql.url=jdbc:mysql://localhost:3306/nbs?useJvmCharsetConverters=false&useDynamicCharsetInfo=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&useEncoding=true

さらに、私の問題だった。

おすすめ記事