返回信息流SQLserver 2008上的数据库,用SQLserver的export功能,利用ODBC作为桥梁,导入到Mysql数据库中。导入正常,但中文存在乱码。Google了几种可能的解决方案,尝试未果,特求助万能的论坛~
尝试的解决方案是:
1、将mysql的数据库建立为GBK编码,还是乱码;
2、在Mysql的my.ini里设置为GBK编码,依旧乱码;
3、ODBC连接设置initial statement为:set @@session.sql_mode=ANSI_QUITES,主要是为了解决SQL语句中无法识别引号的问题,不知还能否同时加上set names 'gbk'。
这是一条镜像帖。来源:北邮人论坛 / database / #5618同步于 2011/5/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
【求助】SQLServer导入Mysql中文乱码
michael2008
2011/5/26镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
mysql建立的时候用的是:
create database microblog default CHARACTER SET gbk COLLATE gbk_chinese_ci;
ODBC连接的时候选择是GBK
sqlserver的编码默认是GBK吧?这个没有确认。
【 在 zzcc 的大作中提到: 】
: mysql字符集,数据库字符集,连接字符集都是GBK吗?
: --
utf-8确实是为了保持兼容性的一个方法,只是抓取数据的时候用JDBC存入了sqlserver,没有考虑如何编码,现在想要导入到MySQL Cluster里面去,结果就出现了乱码。
当然,以后的数据不论是抓取还是存储,都转为UTF-8编码再存,就不会有乱码问题了,只是当下不得不解决乱码问题。
【 在 RockyPrince 的大作中提到: 】
: 编码为utf-8
: --
先确认一下啊。。。
如果是 UTF-8 就转换一下成 GBK 就行了
在导入 MySQL 前执行一下 SET NAMES GBK;
【 在 michael2008 的大作中提到: 】
: mysql建立的时候用的是:
: create database microblog default CHARACTER SET gbk COLLATE gbk_chinese_ci;
: ODBC连接的时候选择是GBK
: ...................
首先谢谢大家的帮助!尝试诸多方法,还是无效。
查询Mysql数据库,发现可能还是mysql数据库编码的问题,如下,其中只有一部分的设置成功了,其他的都还不是GBK的编码。
mysql> show variables like 'character%';
+--------------------------+----------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----+
| character_set_client | latin1
|
| character_set_connection | latin1
|
| character_set_database | gbk
|
| character_set_filesystem | binary
|
| character_set_results | latin1
|
| character_set_server | gbk
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.5\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.00 sec)
使用的my.ini文件编码设置如下:
[client]
defualt-character-set=gbk
character_set_client=gbk
character_set_connection=gbk
character_set_results=gbk
[mysql]
default-character-set=gbk
[mysqld]
character-set-server=gbk
按照网上的说法,应该是只设置如下:
[mysqld]
default-character-set=gbk //数据库的
set-variable=max_connections=1000
[client]
default-character-set=gbk //服务器+客户端+连接的
但实际上无效,我按照查询得到的变量一个一个在my.ini里面赋值为GBK,但没有生效,查询show variables like 'character%';得到的结果还是并非都是GBK。
你楼上那个set names试了吗?
【 在 michael2008 的大作中提到: 】
: 首先谢谢大家的帮助!尝试诸多方法,还是无效。
: 查询Mysql数据库,发现可能还是mysql数据库编码的问题,如下,其中只有一部分的设置成功了,其他的都还不是GBK的编码。
: mysql> show variables like 'character%';
: ...................
如果你的源数据不是 GBK 编码的,MySQL 再怎么设置都白搭
【 在 michael2008 的大作中提到: 】
: 首先谢谢大家的帮助!尝试诸多方法,还是无效。
: 查询Mysql数据库,发现可能还是mysql数据库编码的问题,如下,其中只有一部分的设置成功了,其他的都还不是GBK的编码。
: mysql> show variables like 'character%';
: ...................