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
照合順序にも関係があると思いますが、よく分かりません。私の場合は、キリル文字をサポートする必要があったので、確かに関係がありました。
これを試してみてください。私の場合はうまくいきました。
ターゲットデータベースを作成する際に初期照合を設定する
utf8_unicode_ci
SET NAMES 'utf8' COLLATE 'utf8_unicode_ci';
SQLファイルの先頭に追加します走る
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
さらに、私の問題だった。