为了避免乱码应尽量少用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编码的页面里就会出问题了,可能你在页面中输入是正确的但传输到了服务器端就会乱码,而且他可能会影响下面的字也出现乱码(字节码组合问题)。


相关文章推荐

Sublime Text 2 不支持GB2312和GBK编码/中文乱码

Sublime Text 2是一个非常不错的源代码及文本编辑器,但是不支持GB2312和GBK编码在很多情况下会非常麻烦。不过Sublime Package Control所以供的插件可以让Subli...

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

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

做网站,乱码?应该选用什么编码?GB2312 ? UTF-8 ?

当然了,最常用的编码也就是GB2312 和 UTF-8 了。 ================================================起===================...
  • imwtr
  • imwtr
  • 2014年09月13日 16:18
  • 434

sublime text3 gb2312编码文件显示乱码,ConvertToUTF8转码失效

sublime text3 gb2312编码文件显示乱码,ConvertToUTF8转码失效 分类: 前端相关 | 发表于 2015-01-20 | 浏览(10753)  字体:大 中 ...

ASP中Utf-8与Gb2312编码转换乱码问题的解决方法 页面编码声明

出现这样的问题是当你浏览UTF-8编码的时候,服务器默认用UTF-8的引擎来输出html,当你用再浏览GB2312的页面时,它还是用UTF-8来输出本应是GB2312编码的页面所以会乱码。  为...

我是一个尽量少用国产软件的软件开发工程师

[作者] 网名: 猪头三 站点: http://www.x86asm.com Email: 643439947@qq.com QQ: 643439947 编程生涯: 2001~至今[15...

String为什么尽量少用+ stringbuildd的原因

String为什么尽量少用+ stringbuildd的原因

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

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

MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题

MySQL中涉及的几个字符集character-set-server/default-character-set:服务器字符集,默认情况下所采用的。character-set-database:数据库...

ajax中与PHP json_encode中全为gb2312乱码最终解决方案

ajax中与PHP json_encode中全为gb2312乱码最终解决方案 先说一下我的情况: 1,HTML是GBK,JS是写在HTML里,PHP也是GBK2312,php的header头和ht...
  • kingdtl
  • kingdtl
  • 2012年10月06日 22:35
  • 728
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:为了避免乱码应尽量少用GB2312编码
举报原因:
原因补充:

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