MYSQL utf8/gbk/big5与英文/简中/繁中的关系

时间:2023-01-06 11:01:50
设置统一的字符编码能解决乱码问题,
我是用ACCESS+MYSQL+ODBC做开发的
在大陆一家公司(服务器和客户机都是简体中文系统)使用UTF8字符编码时其中文就会乱码,改用GBK就正常了,
难道是UTF8不支持简中?会不会也一样不支持繁中呢?

如果我想统一大陆/香港/美国的公司的MYSQL资料,做一个master,slave数据流向工程的话我只有一个slave服务器,意思是只能有一个MYSQL目录,把大陆/香港/美国各地的数据汇合一起(有独立的数据库名比如SZDB,HKDB,USDB)
因为每一个地区的都要设置不同的编码,如何统一啊?有朋友遇到过这种问题不?

15 个解决方案

#1


UTF8编码的中文本来就是乱码的。

#2


TO:帐号:yueliangdao0608(骑着上帝看戏)
不是吧,UTF8是国际语言,我见别人的文章上说只要统一UTF8编码,server,connection,client,result,db都用UTF8,中文就不乱

#3


问一下大家,我深圳的一台服务器(简体中文)MYSQL数据库中的
character_set_client
character_set_connection
character_set_database
character_set_results
character_set_server
character_set_system
全是设置为utf8了,我试了以下的客户端连接
1>在ODBC的initial statement设置SET NAMES UTF8后,用ACCESS链接一MYSQL表直接打开,手动写入几个中文,提示:
 Data too long for column 'payee' at row 1,(其实这字段是足够长的)
不明白为什么用utf8编码的客户端写入utf8的库中还会出现这样的问题
数据传送应该是这样client utf8->connection:utf8->server utf8->results utf8
2>发现用UTF8不行后我把SET NAMES UTF8 改成 SET NAMES GBK,好,这下没事了,不提示了,而且在ACCESS中显示的中文是没问题的,但用mysql command line client/mysql query browser查看是却是乱码,
client GBK->connection:utf8->server utf8->results utf8,乱码在情理这中
3>把SET NAMES GBK去掉,什么也不写,结果一样。(简体中文系统应该默认是以GBK编码发送给MYSQL的)
client GBK->connection:utf8->server utf8->results utf8,乱码在情理这中

第一点怎么看,能有兄弟帮一下不,有什么解决办法

#4


自己顶一下

#5


我也碰到同样问题,反正用UTF8不好使。

#6


我说的UTF8是乱码的,只得是在库里保存的是用UTF8变码过的,你出来后必须用UTF8编码才能读出正确的结果。

#7


第2种方法是没错的
至于mysql   command   line   client/mysql   query   browser查看是乱码, 是因为你没设对2者的client环境

#8


Data   too   long   for   column   'payee'   at   row   1,(其实这字段是足够长的) 

你的这个字段的编码还有整个 表的编码是什么 ?一定要跟页面的编码一致

#9


都統一沿用UTF-8(網頁編碼,MYSQL編碼要一致)

#10


trainee 
第2种方法是没错的 
至于mysql command line client/mysql query browser查看是乱码,是因为你没设对2者的client环境 


要去怎么设置呢?我是在服务器(简体中文服务器,mysql是英文版的)上运行mysql command line client/mysql query browser查看出来的结果,

#11


理解后编码的一致性后修正一下以前的信息:
现在的情况是这样子的,用access2003链接下来的表中中文字不会乱,用mysql command client line/mysql query browser查看中文是乱码,
mysql数据中所有的编码(show varables like 'character_set_%'命令)信息:
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 也就是数据库中所有的编码都是UTF8
但我的mysql odbc 3.51中没有设置 SET NAMES UTF8,或set names GBK(可能是这个影响了)
没设置留空了,请问一下是不是这个client端没设置统一的编码造成的?我试着现在补上SET NAMES UTF8,但变成不能插入中文了,要设置成set names GBK才可以,用了set name GBK后而且用mysql command client line/mysql query browser查看刚插入的中文也不乱码了,access中的刚插入的中文也不乱了,但以前的中文数据却乱了,痛苦哦,,,,
不过这个也不是问题,可以导出原来的资料再利用GBK编码导进去,我也尝试了,成功没问题,
之后我把这个没问题的MYSQL中的一个库backup出来传去香港一个服务器上(繁体中文系统,mysql版本一样都是5.19 NT)并导入mysql中,准备做master/slave,但问题来了,在香港服务器上的那个没问题的库却出现了乱码(mysql command client line/mysql query browser或access2003
查看都乱),香港那服务器上的mysql设置和大陆这边的一样,所有的编码都是UTF8唯独mysql odbc 3.51没设置set names之类的,但我不觉得是ODBC没设置的原因,用mysql command client line/mysql query browser根本就不用ODBC.

大家有好的看法吗

#12


解对了马上给分,XX的,这些东西也真烦

#13


我的贴子是谁看谁得益,但答贴的痛苦,呵呵,我现在问的问题都 "mysql使用/乱码/多个master->一个slave/一台电脑能否安装多个mysql"  一条龙了,哈,我自己顶贴的比回贴的还多

#14


老板以后还有更麻烦的事情呢,他XX的  1>多个master-> 一个slave, 2>一台电脑能否安装多个mysql, 3>越南文/韩文的编码 4>集团版系统的开发应用(我的不是web程序),

#15


该回复于2008-05-04 10:36:51被版主删除

#1


UTF8编码的中文本来就是乱码的。

#2


TO:帐号:yueliangdao0608(骑着上帝看戏)
不是吧,UTF8是国际语言,我见别人的文章上说只要统一UTF8编码,server,connection,client,result,db都用UTF8,中文就不乱

#3


问一下大家,我深圳的一台服务器(简体中文)MYSQL数据库中的
character_set_client
character_set_connection
character_set_database
character_set_results
character_set_server
character_set_system
全是设置为utf8了,我试了以下的客户端连接
1>在ODBC的initial statement设置SET NAMES UTF8后,用ACCESS链接一MYSQL表直接打开,手动写入几个中文,提示:
 Data too long for column 'payee' at row 1,(其实这字段是足够长的)
不明白为什么用utf8编码的客户端写入utf8的库中还会出现这样的问题
数据传送应该是这样client utf8->connection:utf8->server utf8->results utf8
2>发现用UTF8不行后我把SET NAMES UTF8 改成 SET NAMES GBK,好,这下没事了,不提示了,而且在ACCESS中显示的中文是没问题的,但用mysql command line client/mysql query browser查看是却是乱码,
client GBK->connection:utf8->server utf8->results utf8,乱码在情理这中
3>把SET NAMES GBK去掉,什么也不写,结果一样。(简体中文系统应该默认是以GBK编码发送给MYSQL的)
client GBK->connection:utf8->server utf8->results utf8,乱码在情理这中

第一点怎么看,能有兄弟帮一下不,有什么解决办法

#4


自己顶一下

#5


我也碰到同样问题,反正用UTF8不好使。

#6


我说的UTF8是乱码的,只得是在库里保存的是用UTF8变码过的,你出来后必须用UTF8编码才能读出正确的结果。

#7


第2种方法是没错的
至于mysql   command   line   client/mysql   query   browser查看是乱码, 是因为你没设对2者的client环境

#8


Data   too   long   for   column   'payee'   at   row   1,(其实这字段是足够长的) 

你的这个字段的编码还有整个 表的编码是什么 ?一定要跟页面的编码一致

#9


都統一沿用UTF-8(網頁編碼,MYSQL編碼要一致)

#10


trainee 
第2种方法是没错的 
至于mysql command line client/mysql query browser查看是乱码,是因为你没设对2者的client环境 


要去怎么设置呢?我是在服务器(简体中文服务器,mysql是英文版的)上运行mysql command line client/mysql query browser查看出来的结果,

#11


理解后编码的一致性后修正一下以前的信息:
现在的情况是这样子的,用access2003链接下来的表中中文字不会乱,用mysql command client line/mysql query browser查看中文是乱码,
mysql数据中所有的编码(show varables like 'character_set_%'命令)信息:
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 也就是数据库中所有的编码都是UTF8
但我的mysql odbc 3.51中没有设置 SET NAMES UTF8,或set names GBK(可能是这个影响了)
没设置留空了,请问一下是不是这个client端没设置统一的编码造成的?我试着现在补上SET NAMES UTF8,但变成不能插入中文了,要设置成set names GBK才可以,用了set name GBK后而且用mysql command client line/mysql query browser查看刚插入的中文也不乱码了,access中的刚插入的中文也不乱了,但以前的中文数据却乱了,痛苦哦,,,,
不过这个也不是问题,可以导出原来的资料再利用GBK编码导进去,我也尝试了,成功没问题,
之后我把这个没问题的MYSQL中的一个库backup出来传去香港一个服务器上(繁体中文系统,mysql版本一样都是5.19 NT)并导入mysql中,准备做master/slave,但问题来了,在香港服务器上的那个没问题的库却出现了乱码(mysql command client line/mysql query browser或access2003
查看都乱),香港那服务器上的mysql设置和大陆这边的一样,所有的编码都是UTF8唯独mysql odbc 3.51没设置set names之类的,但我不觉得是ODBC没设置的原因,用mysql command client line/mysql query browser根本就不用ODBC.

大家有好的看法吗

#12


解对了马上给分,XX的,这些东西也真烦

#13


我的贴子是谁看谁得益,但答贴的痛苦,呵呵,我现在问的问题都 "mysql使用/乱码/多个master->一个slave/一台电脑能否安装多个mysql"  一条龙了,哈,我自己顶贴的比回贴的还多

#14


老板以后还有更麻烦的事情呢,他XX的  1>多个master-> 一个slave, 2>一台电脑能否安装多个mysql, 3>越南文/韩文的编码 4>集团版系统的开发应用(我的不是web程序),

#15


该回复于2008-05-04 10:36:51被版主删除