利用load data infile命令导入userDesc.txt数据,数据导入后所有的中文居然全是乱码,
mysql字符集设置如下:
-> ;
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | D:\MySQL\MySQL Server 5.1\share\charsets\ |
+--------------------------+-------------------------------------------+
userDesc.txt字符编码通过ultraedit改为:utf-8
show create table显示表的字符编码为utf8
执行上面的导入语句后发现表中数据全是乱码,不知何故,网上说要改的地方都试过,没作用呢
后来利用native2ascii 将userDesc.txt转换成utf8格式成一堆类似u6d59u6c5fu4e2du 这种显示的数据,导进去仍是这种数字与字母的组合,因为要从导入的几千条数据中筛选重复数据,查询到文件里面后仍是utf8格式的数据,看不了啊,试了很多办法都转不成可阅读形式的中文。
因此小弟有两个问题想请教:
一是为什么utf8编码设置的数据库导入中文是乱码,怎么解决;
二是utf8格式的文件怎么转换成人能阅读的中文。
希望大侠赐教!非常感谢
mysql字符集设置如下:
-> ;
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | D:\MySQL\MySQL Server 5.1\share\charsets\ |
+--------------------------+-------------------------------------------+
userDesc.txt字符编码通过ultraedit改为:utf-8
show create table显示表的字符编码为utf8
执行上面的导入语句后发现表中数据全是乱码,不知何故,网上说要改的地方都试过,没作用呢
后来利用native2ascii 将userDesc.txt转换成utf8格式成一堆类似u6d59u6c5fu4e2du 这种显示的数据,导进去仍是这种数字与字母的组合,因为要从导入的几千条数据中筛选重复数据,查询到文件里面后仍是utf8格式的数据,看不了啊,试了很多办法都转不成可阅读形式的中文。
因此小弟有两个问题想请教:
一是为什么utf8编码设置的数据库导入中文是乱码,怎么解决;
二是utf8格式的文件怎么转换成人能阅读的中文。
希望大侠赐教!非常感谢
1、用什么软件备份,导入是用什么软件,在MYSQL中?
---------------------+
| user | CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uname` varchar(255) DEFAULT NULL,
`num` varchar(64) DEFAULT NULL,
`deptNum` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=27642 DEFAULT CHARSET=utf8 |
+-------+----------------------------------------------------
我是直接用load data infile命令把用逗号分隔开的数据内容到今数据库表的
命令如下:
load data infile 'd:\\userDesc.txt' into table test.user terminated by ',' enclosed by '"' lines terminated by '\r\n' (uname,num,deptNum);
ERROR 1366 (HY000): Incorrect string value: '\xFF\xFE\x88l\xEA\x81...' for colum
n 'uname' at row 1
u6d59u6c5fu4e2du这种形式
在txt 文件中用utf8保存不管文件中是不是出现乱码都不要管 只要保存设置utf8就可以mysql> show variables like "%character_set%"
-> ;
+--------------------------+----------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----+
| character_set_client | utf8
|
| character_set_connection | utf8
|
| character_set_database | utf8
|
| character_set_filesystem | binary
|
| character_set_results | utf8
|
| character_set_server | utf8
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.1\share\chars
ets\ |
+--------------------------+----------------------------------------------------
之后你导入到数据库的就是正确的字符如果出现
| A | a | 20
16 | | | |
| | A | Kmユ徽U | 2 0
18 | | | |
| A | 蝠・ | 20
20 | | | |
| A | 髦ソ鬟槫賦蝠・ | 20
22 | | | |
----+-------+--------------+---------+
这样的乱码 他们不是乱码 是你的查看工具编码设置的问题其实存在数据库中的就是正确的汉字
要用这种格式才行。
还有就是我如何能把utf8编码过后的中文数据转换成能够阅读的中文呢?
通过WORD转换
用word打开全是字母和数字,转换不了呢
然后预览了几个有关中文的和utf8的,仍是数字加字母,unicode却显示中文乱码
[HKEY_CURRENT_USER/Console/%SystemRoot%_system32_cmd.exe] "CodePage"=dword:000003a8修改code为932-->日语,936-->中文GBK
目前还不知道怎么修改成utf8的格式
不过你可以下载个sqlyog工具查看是不是乱码就知道了
mysql> select hex(65001);
+------------+
| hex(65001) |
+------------+
| FDE9 |
+------------+
1 row in set (0.00 sec)
我的set的时候不行 当查看console编码的时候是空的 并不是utf8....你还是用工具看看 确认下原因在哪里是工具显示问题还是配置问题