免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1512 | 回复: 2
打印 上一主题 下一主题

问个关于字符编码的问题,盼高手解答! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-23 23:27 |只看该作者 |倒序浏览
mysql中某个数据库,假设为d,字符编码设为utf-8.
某个client的字符集设置如下:
character_set_client=gb2312,character_set_connection=gb2312,character_set_results=gb2312
向d的表插入数据(中文),查询显示正常.当把character_set_results改为latin1时,查询显示乱码.
令我困惑的问题是,数据在d中以utf-8编码方式存储,也就是当server接收到client的数据后,存储时经过一个gb2312->utf-8的转码过程,显示results时也经过一个character_set_database->character_set_results,这里也就是utf-8->latin1,应该也能够正常显示,为什么会出现乱码呢?
还有character_set_connection是个什么角色,文档中提到当server收到数据时转为character_set_connection再处理,那么存向库中时岂不是也要经过connection->database编码的转换!
这个问题困惑很久,请高手指教!
devboy 该用户已被删除
2 [报告]
发表于 2005-11-24 03:21 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2005-11-24 12:30 |只看该作者
原帖由 devboy 于 2005-11-24 03:21 发表
要保证结果正确,必须保证数据表采用的格式是正确的,也就是说,至少能够存放所有的汉字,那么我们只有两种选择,gbk 或者 utf-8,下面讨论 utf-8 的情况。

谢谢,有点了解,不过还有点疑惑:
如果set Names("latin1"),那么向数据库存储中文字符,以及显示结果(windows系统命令行下)都正常,
现在假设向数据库中存储"汉“字,不论character_set_client设为gbk(gb2312)还是latin1,"汉“在数据库中应该是一个唯一的utf-8三字节编码,设为“abc".查询时,系统根据character_set_results进行相应转码,也就是说character_set_client和character_set_results是独立的,这样理解对么?
测试了一下,当把character_set_client和character_set_results同时设为gb2312或同时设为latin1时,插入中文后查询能够正常显示。但是其中一个设为gb2312,另一个设为latin1时,不能正常显示。不解为什么?是因为我的客户端的输入软件自动转码还是我的理解有错?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP