为了避免乱码应尽量少用GB2312编码

原创 2012年03月22日 10:38:45

文章是半转载,半原创的。如有表述不对的,还请各位看官淡定!

今天在折腾MySql数据库的时候,SQL-Front里所有的字符串编码,包括my.ini配置文件里的default-character-set=gb2312,在录入个人资料表里的姓名的时候,随手输入“和珅”两个字,SQL-Front居然提示:

SQL 执行错误 # 1366. 从数据库的响应:
Incorrect string value: '珅' for column 'name' at row 1

额 好吧,字串值不匹配,编码全部换成GBK的就OK了。随手写了个简单的C程序,看“坤”这个字的编码:

#include <stdio.h>


int main(void)
{
unsigned char buf[] = "珅" ;
printf("0x%02X, 0x%02X\n", buf[0], buf[1]) ;
return 0 ;
}

结果:0xAB, 0x7C

至于原因查阅以下几种编码

GB2312
双字节,定长
包括一二级汉字和9区符号
高位低位一样,都是从0xA1~0xFE(很明显,“珅”字不在这个范围里面)
汉字编码范围是0xB0A1~0xF7FE

GBK
双字节,定长
兼容GB2312
编码范围:0x8140~0xFEFE
所有字符都可以映射到Unicode2.0

GB18030-2000(GBK2K)
收藏少数民族字型
不定长,包含二字节部分和四字节部分
二字节部分兼容GBK
四字节部分是扩充字符,第一第三字节范围:0x81~0xFE,第二第四字节范围:0x30~0x39

Unicode
包括所有字符字型
各地区语言都可与之建立映射
异种语言的转换是通过Unicode来完成的
汉字从4E00开始

其中gb2312编码所表示的字符最少,这样其实会引起很多问题,其中有些可能你看不懂的乱码问题也是因为这原因而起的。

这里举个例子:

"和珅"这两个字中的"珅"字简体字和繁体字是一样的,但在gb2312编码里是没有的。这样在使用gb2312编码的页面里就会出问题了,可能你在页面中输入是正确的但传输到了服务器端就会乱码,而且他可能会影响下面的字也出现乱码(字节码组合问题)。


pythonGB2312乱码问题

unc = stringa.decode("gb2312") print unc.encode("utf-8") LovelyPython中的通用解决方案,使用chardet模块,该模块是...
  • wangran51
  • wangran51
  • 2012年07月19日 15:52
  • 2718

python抓取gb2312/gbk编码网页乱码问题

做了个网络爬虫抓取网页,但如果网页是gbk/gb2312编码,则会出现乱码问题,如下: 取得文字后,直接打印,输出结果str如下:¹óÖÝÈËÊ¿¼ÊÔÐÅÏ¢Íø_¹óÖÝÈËÊ¿¼ÊÔÍø_...
  • junli_chen
  • junli_chen
  • 2015年11月28日 11:44
  • 6774

网页乱码 UTF-8与GB2312 及 JSP中文问题

转至sucn.com 研究好多天了,也试过好多办法了,总结出目前发现最好的方法:先说一下基本的东西:简体中文繁体中文UTF-8codepage指定了IIS按什么编码读取传递过来的串串(表单提交,地址栏...
  • cctt_1
  • cctt_1
  • 2007年04月22日 21:42
  • 4548

URL链接中汉字乱码转UTF-8和gb2312

在使用URL向服务器提交数据的时候,如果我们提交的数据中存在汉字,就会出现下列情况 http://192.168.11.22/cgi-bin/serial.cgi?type=text&text=%C...
  • u011037149
  • u011037149
  • 2016年04月02日 18:45
  • 1222

ANSI和UTF-8文本编码的体积比较

ANSI和UTF-8文本编码的体积比较语言设置指的是这里的charset,如简体中文是charset=gb2312,UTF-8是charset=utf-8;文本编码指的是文件的储存格式,我们新建的文本...
  • renxianzuo
  • renxianzuo
  • 2009年10月16日 10:39
  • 571

尽量不要使用gb2312避免乱码

查阅以下几种编码  GB2312双字节,定长包括一二级汉字和9区符号高位低位一样,都是从0xA1~0xFE汉字编码范围是0xB0A1~0xF7FE GBK双字节,定长兼容GB2312编码范围:0x81...
  • luojxun
  • luojxun
  • 2010年04月06日 11:02
  • 5149

StreamReader与StreamWriter乱码问题

StreamReader与StreamWriter乱码问题,一般都是编码问题所造成的 目前中文一般采用GB2312 string str=string.Empty; ...
  • nidexuanzhe
  • nidexuanzhe
  • 2012年11月27日 21:32
  • 6144

彻底解决jsp中文乱码问题(eclips 添加中文编码方式gb2312).

彻底解决jsp中文乱码问题。Eclipse设置:1)            窗口/首选项  2)            Eclipse编辑器默认没有中文,需要手工为eclipse添加中文编码方式。在编...
  • xiaotao_liu
  • xiaotao_liu
  • 2008年01月11日 11:16
  • 2732

node.js 教你写爬虫(附上gbk,gb2312中文乱码的解决方法)

好久没有更新博客了,现在前端web越来越火了,各种前端技术也层出不穷,不过有一些趋势是可以肯定的,前端现在越来越模块化,mvvm框架让前端用户只需要关注数据的变化,也让web端从webpage转为功能...
  • qq_33565573
  • qq_33565573
  • 2017年07月25日 16:20
  • 1612

解决Jquery在GET方式传递参数时gb2312中文编码乱码

数据传递编码仅支持UTF-8,这个虽然是全球统一编码,但是也要考虑一下中国人名本地网站的编码问题吧而且 在jquery的发送端,无论你设置了程序级编码还是页面级编码,jquery都会使用utf-8的编...
  • CsethCRM
  • CsethCRM
  • 2011年05月19日 17:55
  • 3359
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:为了避免乱码应尽量少用GB2312编码
举报原因:
原因补充:

(最多只允许输入30个字)