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

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

如果我想统一大陆/香港/美国的公司的MYSQL资料,做一个master,slave数据流向工程的话我只有一个slave服务器,意思是只能有一个MYSQL目录,把大陆/香港/美国各地的数据汇合一起(有独立的数据库名比如SZDB,HKDB,USDB)
因为每一个地区的都要设置不同的编码,如何统一啊?有朋友遇到过这种问题不?
...全文
769 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
stephen_deng 2008-01-24
  • 打赏
  • 举报
回复
老板以后还有更麻烦的事情呢,他XX的 1>多个master-> 一个slave, 2>一台电脑能否安装多个mysql, 3>越南文/韩文的编码 4>集团版系统的开发应用(我的不是web程序),
stephen_deng 2008-01-24
  • 打赏
  • 举报
回复
我的贴子是谁看谁得益,但答贴的痛苦,呵呵,我现在问的问题都 "mysql使用/乱码/多个master->一个slave/一台电脑能否安装多个mysql" 一条龙了,哈,我自己顶贴的比回贴的还多
stephen_deng 2008-01-24
  • 打赏
  • 举报
回复
解对了马上给分,XX的,这些东西也真烦
stephen_deng 2008-01-24
  • 打赏
  • 举报
回复
理解后编码的一致性后修正一下以前的信息:
现在的情况是这样子的,用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.

大家有好的看法吗
stephen_deng 2008-01-22
  • 打赏
  • 举报
回复
trainee
第2种方法是没错的
至于mysql command line client/mysql query browser查看是乱码,是因为你没设对2者的client环境


要去怎么设置呢?我是在服务器(简体中文服务器,mysql是英文版的)上运行mysql command line client/mysql query browser查看出来的结果,
daisylh 2007-12-12
  • 打赏
  • 举报
回复
都統一沿用UTF-8(網頁編碼,MYSQL編碼要一致)
懒得去死 2007-12-11
  • 打赏
  • 举报
回复
Data too long for column 'payee' at row 1,(其实这字段是足够长的)

你的这个字段的编码还有整个 表的编码是什么 ?一定要跟页面的编码一致
trainee 2007-12-11
  • 打赏
  • 举报
回复
第2种方法是没错的
至于mysql command line client/mysql query browser查看是乱码, 是因为你没设对2者的client环境
懒得去死 2007-12-06
  • 打赏
  • 举报
回复
我说的UTF8是乱码的,只得是在库里保存的是用UTF8变码过的,你出来后必须用UTF8编码才能读出正确的结果。
toddzst 2007-12-06
  • 打赏
  • 举报
回复
我也碰到同样问题,反正用UTF8不好使。
stephen_deng 2007-12-06
  • 打赏
  • 举报
回复
自己顶一下
stephen_deng 2007-12-05
  • 打赏
  • 举报
回复
问一下大家,我深圳的一台服务器(简体中文)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,乱码在情理这中

第一点怎么看,能有兄弟帮一下不,有什么解决办法
stephen_deng 2007-12-05
  • 打赏
  • 举报
回复
TO:帐号:yueliangdao0608(骑着上帝看戏)
不是吧,UTF8是国际语言,我见别人的文章上说只要统一UTF8编码,server,connection,client,result,db都用UTF8,中文就不乱
懒得去死 2007-11-20
  • 打赏
  • 举报
回复
UTF8编码的中文本来就是乱码的。
php版mysql大数据库备份和恢复工具,这是亮仔修改的无乱码版 在原faisunSQL 4.0的基础上,针对数据备份过程中出现乱码的问题,做了优化. 增强的功能: 1.自动识别数据库版本,对于MySQL 4.1以上,备份数据时提示选择字符集. 2.导入数据时,提示原数据库编码,并自动识别. 3.增加导入目标数据库字符集选项. 4.支持GBKBIG5UTF8之间的编码转换(见特别说明4). 特别说明: 1.乱码问题一般仅出现在MySQL 4.1/MySQL 5 版本以后,如果你的数据库低于这个版本,基本可以不用考虑这个问题. 2.确保原始数据的完整是至关重要的.就算导出时出现乱码,但只要原始数据完整,总有解决的办法.所以,导出时数据库字符集的选择必须正确,保证导出数据无乱码.一般为GBK,UTF8或Latin1.导出后,可以用文本编辑器先查看一下,看是否出现问号(?)等乱码. 3.导出和导入数据编码要保持一致(见特别说明4). 4.虽然程序目前支持GBKBIG5UTF8之间的编码转换,但这种转换不是安全的.首先你的目标导入服务器要支持iconv,即在导入时如果"编码转换功能"提示为支持,则可以使用此功能.反之则不可以.其次,转换时的数据必须是"干净"的.即GBKBIG5UTF8不能混合.如果你想将原来备份出的GBK数据导入到编码为UTF8数据库,则你的GBK数据中仅能含有GBK或GB2312的简体中文字符.不可以出现BIG5等繁体字符,否则转换将失败.基本上,一般的博客/论坛数据都不能保证这种纯净性,谁也不能保证你的文章中不会混合使用简体和繁体文字,所以这种跨字符集的导入导出数据难度很大.绝对不要轻易尝试这种游戏.目前的主流论坛如Discuz、PHPWind等都提供支持GBKBIG5UTF8的不同程序.你在最初安装时,一定先想好自己需要那种字符的程序,一旦选定,以后不是迫不得已,不要更改.以上仅针对 5.鉴于上面特别说明4,如果你是从MySQL 4.0.X/MySQL 3的老数据版本导入到MySQL 4.1/MySQL 5的高数据库版本,导入时请选择GBK编码.如果是UTF8编码的数据,如我的博客(http://www.zhouliang.name)采用WordPress程序,默认使用UTF8编码,则只能在MySQL 4.1/MySQL 5以上的数据库中导入导出,因为低版本的MySQL不支持UTF8. 6.以上说明仅针对本程序而言,在编码转换方面,不排除通过其他手段实现的可能性. 程序使用中出现任何问题(编码转换方面),欢迎与我联络: 我的E-Mail: php@zhouliang.name 本程序讨论主页:http://www.zhouliang.name/archives/198.htm 我的博客:http://www.zhouliang.name 此程序只是针对"乱码"问题做了改进,faisunSQL 4.0其他方面的故有功能效率与本增强版无关,如有问题请联系原作者.

56,912

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧