将UTF8编码的数据导入mysql对我来说不起作用.UTF8字符已损坏.例如,Nöthnagel显示为NÃthnagel
我创建了一个sql转储文件来进行包含UTF-8编码数据的导入.例如:
INSERT INTO `users` VALUES(1, 'Fred','Nöthnagel');
Run Code Online (Sandbox Code Playgroud)
表示文件中ö的字节序列是c3 b6,我认为是正确的,因为它在vim和我的bash shell中正确显示,其中设置了以下环境变量:
$ env | grep -i utf
LANG=en_US.UTF-8
XTERM_LOCALE=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
mysql数据库创建如下:
mysql> CREATE DATABASE mydb CHARACTER SET utf8;
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
我正在导入转储文件,如下所示:
mysql -u root -psecret mydb < mydump.sql
Run Code Online (Sandbox Code Playgroud)
请告诉我上面缺少什么.
Les*_*ess 56
我认为这也可能与整理有关,但我不确定.在我的情况下它确实如此,因为我必须支持西里尔文.
试试这个,为我工作:
在创建目标数据库时设置初始排序规则 utf8_general_ci
添加SET NAMES 'utf8' COLLATE 'utf8_general_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
另外,看看我的问题是什么.
Ali*_*iSh 10
使用此命令将utf8表导入数据库:
mysql -u USERNAME -pPASSWORD --default_character_set utf8 DATABASE < file.sql
Run Code Online (Sandbox Code Playgroud)