【什么是编码】

首先,我们要明白,GB2312、GBK和UTF-8都是一种字符编码。除此之外,还有好多字符编码。只是对于我们中国人的网站来说,用这三种编码比较多。

简单的说一下,为什么要用编码?在计算机内,储存文本信息用ASC II码,每一个字符对应着唯一的ASCII码。最初计算机是由美国发明的,他们也用的是键盘和上面的字母,所以他们的字符ASCII好解决。但是我们中国 的就不同了,每个汉字要对应唯一的ASCII码。这样,就出来了国家制定的字符编码标准:GB2312、GBK等。其他国家,其他语言也有他们对应的编码 标准。

GB 就是国标的意思,GB2312和GBK主要用于汉字的编码,而UTF-8是全世界通用的。意思就是说,如果你的网页主要面对使用汉语的中国人的话,使用 GB2312 和 GBK 非常好,文字储存体积要小,有一些优点。如果你的网页要面向世界的话,你再用GB2312 和 GBK 作为网页编码,有些电脑上的浏览器没有这种编码,你的网页汉字内容就会变成无法识别的乱码。

【延伸阅读】

GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换(GBK、GB2312 -- Unicode -- UTF8 )

使用UTF-8的一个好处:其他地区的用户(如香港台湾)无需安装简体中文支持就能正常观看你的文字而不会出现乱码。

  • gb2312 是简体中文的码
  • gbk 支持简体中文及繁体中文
  • big5 支持繁体中文
  • utf-8 支持几乎所有字符

中国大陆最常用的就是GBK18030编码,除此之外还有GBK,GB2312,这几个编码的关系是这样的。 最早制定的汉字编码是GB2312,包括6763个汉字和682个其它符号 95年重新修订了编码,命名GBK1.0,共收录了21886个符号。 之后又推出了GBK18030编码,共收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字,现在WINDOWS平台必需要支持GBK18030编码。

【编码转换】

通常,服务端与客户端之间进行数据传输,涉及到中文,往往都会涉及到编码的转换。服务端在遇到中文时,都会转换为UTF-8格式。而客户端接收到服务端数据时,一般会把该数据的中文字符转为GBK(GB2312)才能正常显示。

//utf8_to_gb2312string utf8_to_gb2312(const char* utf8){int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);wchar_t* wstr = new wchar_t[len + 1];memset(wstr, 0, len + 1);MultiByteToWideChar(CP_UTF8, 0, utf8, -1, wstr, len);len = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL);char* str = new char[len + 1];memset(str, 0, len + 1);WideCharToMultiByte(CP_ACP, 0, wstr, -1, str, len, NULL, NULL);string strTemp = str;if (wstr) delete[] wstr;if (str)delete[] str;return strTemp;}//gb2312_to_utf8string gb2312_to_utf8(const char* gb2312){int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);wchar_t* wstr = new wchar_t[len + 1];memset(wstr, 0, len + 1);MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);char* str = new char[len + 1];memset(str, 0, len + 1);WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);string strTemp = str;if (wstr)delete[] wstr;if (str)delete[] str;return strTemp;}
Value Description
CP_ACP ANSI code page
CP_MACCP Not supported
CP_OEMCP OEM code page
CP_SYMBOL Not supported
CP_THREAD_ACP Not supported
CP_UTF7 UTF-7 code page
CP_UTF8 UTF-8 code page

GB2312、GBK、UTF-8 如何转换相关推荐

  1. 字符集、字符编码、国际化、本地化简要总结(UNICODE/UTF/ASCII/GB2312/GBK/GB18030)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明   普通的linux 和 普通的windows.    ...

  2. C语言实现GBK/GB2312/五大码之间的转换(转)

    源:C语言实现GBK/GB2312/五大码之间的转换 //----------------------------------------------------------------------- ...

  3. c语言字符串如何转换成gbk,C语言实现GBK/GB2312/五大码之间的转换(转)

    //--------------------------------------------------------------------------- // 大五码Big5转GBK码: void ...

  4. ASCII,unicode, utf8 ,big5 ,gb2312,gbk,gb18030等几种常用编码区别

    ASCII,unicode, utf8 ,big5 ,gb2312,gbk,gb18030等几种常用编码区别 最近老为编码问题而烦燥,下定决心一定要将其弄明白!本文主要总 结网上一些朋友提供的 asc ...

  5. 编码标准-GB2312 GBK GB18030

    关于 ASCII编码 可以查看我的另外一篇博客 编码标准-ASCII 关于 Unicode 可以参考我的另外一篇博客 Unicode 编码标准-GB2312 GBK GB18030 基本概念 区位码 ...

  6. 深入理解-字符编码ASCII,GB2312,GBK,Unicode,UTF-8

    字符编码 简介 起初再考虑写不写这篇文章,感觉这篇文章比较枯燥乏味,而且自己感觉也没理解的太透彻,就把理解的记录下来,所以这是纪念版的 前方高能,非战斗人员请迅速撤离,我要开始装逼了. Go hard ...

  7. 大端小端,ascii,unicode,utf8,utf16,utf32,gb2312,gbk,gb18030等字符编码问题

    字符编码的问题让我困惑了好久的一段时间,其实简单的想,字符编码没有什么东西的,可是想真弄明白还是花去了我一点时间,前端时间写了一个简单的log程序,主要的工作就是支持系统运行时输出日志信息,同时允许定 ...

  8. Qt QString 中文 char* UTF-8 QByteArray QTextCodec unicode gb2312 GBK 乱码与转码问题

    代码如下:如果不不设全局的字符集是utf-8,那么网上一般的方法是可以转的.如下程序中 #define DD 1的情况下:但是如果设置了全局的utf-8,再用以前的方法: QByteArray ba= ...

  9. JS中utf8和GBK的字符编码转换

    1.PHP中的 json_encode 函数只限编码UTF-8的数据,当转换GBK或者GB2312等编码的数据时,会将汉字转为NULL. 2.JavaScript 中json 的使用: ① 将对象转为 ...

  10. char qt 转unicode_Qt QString 中文 char* UTF-8 QByteArray QTextCodec unicode gb2312 GBK 乱码与转码问题...

    2012-03-22 14:00 175人阅读 评论(0) 代码如下:如果不不设全局的字符集是utf-8,那么网上一般的方法是可以转的.如下程序中 #define DD 1的情况下:但是如果设置了全局 ...

最新文章

  1. 程序员也想改 Lottie 动画?是的!
  2. DRV8301的使用
  3. Jerry带您了解Restful ABAP Programming模型系列之二:Action和Validation的实现
  4. Confluence Cloud的Teams Message Extension
  5. python8皇后不攻击问题_Python八皇后问题(落最后一颗子)
  6. oracle sysnonym,Oracle权限
  7. redis学习及实践3---Jedis、JedisPool、Jedis分布式实例介绍
  8. Ajax搜索提示功能
  9. 微信公众号发送消息接口(群发接口)
  10. 系统安装 使用VMware14安装XP系统
  11. 大数据杀熟 算法_大数据“杀熟” 怎能让真正的刀俎逍遥法外
  12. Linux用户和组权限管理
  13. 怎样在大公司混成中层干部
  14. [转] 两种老公,两种人生。。(女人该看,男生更该看)
  15. 做外贸十大不能接的订单!
  16. 微信推送封面尺寸_微信公众平台图片尺寸是多少 如何设置
  17. python米和厘米转换代码_用Python写一个朴素的长度单位转换器
  18. 商络转债上市价格预测
  19. 科技赋能拉萨之“肺”,华为助力拉鲁湿地智慧管理守护绿水青山
  20. Windows下配置PHP环境

热门文章

  1. 怎么清理c盘语言文件,怎么清理c盘垃圾
  2. python项目方案书模板格式_项目策划书格式及范文
  3. 分布式系统接口幂等性
  4. 整人输入指定内容退出html,整人代码
  5. oracle sql 正则表达式
  6. WLAN 安全协议 - WAPI
  7. 学一点Wi-Fi:WAPI
  8. 用友A8 mysql配置文件_用友nc 读取配置文件方法
  9. mysql url 解析json数据_如何在MySQL中编写可以解析列中JSON数据的查...
  10. 下载微信小程序中音频的方法和路径