一. BIG5编码, GB编码(GB2312, GBK, ...), Unicode编码, UTF编码

1.1. BIG5编码

BIG5字集是台湾繁体字集,共包括国标繁体汉字13053个

1.2. GB编码

GB2312字集是简体字集, 全称为GB2312(80)字集, 共包括国标简体汉字6763个;
GB2312是中国规定的汉字编码, 也可以说是简体中文的字符集编码;

GBK包含全部中文字符;
GBK字集是简繁字集, 包括了GB的字集, BIG5的字集和一些符号, 共包括21003个字符;
GBK是GB2312的扩展, 除了兼容GB2312外, 它还能显示繁体中文, 还有日文的假名;
GBK标准, 他兼容GB2312标准, 同时在GB2312标准的基础上扩展了GB13000包含的字;

注意:
1. GBK字集是简繁字集, 包括了GB字集, BIG5字集和一些符号; 例如BIG5编码能够表示XX汉字, GBK编码也能够表示XX汉字, 但是XX汉字的BIG5编码与GBK编码是不同的.
2. GBK编码兼容GB2312编码, 例如GB2312编码能够表示YY汉字, 那么GBK编码也能够表示YY汉字, 而且YY汉字的GB2312编码与GBK编码是相同的.
3. 也就是说"包含"与"兼容"是两回事来的.

1.3. Unicode编码

Unicode也是一种字符编码方法, 由国际组织设计, 可以容纳全世界所有语言文字的编码方案. Unicode的学名是"UniversalMultiple-Octet Coded Character Set". 简称为UCS。UCS可以看作是"Unicode CharacterSet"的缩写.

1.4. UTF编码

UTF编码是对Unicode编码的存储(传输)规则(不是对文字的编码规则).

二. 简体中文与繁体中文

1. 简体中文是使用GB2312编码的; 台湾繁体中文使用BIG5编码; 而GBK编码既包含简体中文, 也包含了繁体中文;
2. 所以, 要表示简体中文, 你可以使用GB2312编码和GBK编码; 要表示繁体中文, 你可以使用BIG5编码和GBK编码;
3. 通常, 如果在简体中文操作系统中使用的繁体字, 选GBK码繁体中文; 如果在繁体中文操作系统使用繁体字, 选BIG5码繁体中文;

三. 繁简体中文的互转

我自己使用Window系统就是使用GBK编码简体中文系统.
例子: char* p = "你好, 中国";
1. 这里就是使用GBK编码简体部分(就是GB2312编码)(本地操作系统的编码);
2. 如果"你好, 中国"转换成繁体, 你需要使用GBK编码的繁体部分或者使用BIG5编码;

四. 整理一下思路

1. 简体中文可以用哪些编码实现: GBK编码简体部分, Unicode编码简体部分, GB2312编码;
2. 繁体中文可以用哪些编码实现: GBK编码繁体部分, Unicode编码繁体部分, BIG5编码;
3. 所以繁简中文互换有这些途径(GBK编码简体部分和GB2312编码可以认为是同一个东西):

 a. GBK编码简体部分<->GBK编码繁体部分b. GBK编码简体部分<->Unicode编码繁体部分c. GBK编码简体部分<->BIG5编码d. Unicode编码简体部分<->GBK编码繁体部分e. Unicode编码简体部分<->Unicode编码繁体部分f. Unicode编码简体部分<->BIG5编码

4. 其中编码实现时, "GBK编码<->BIG5编码"需要这样子(通过Unicode作为中间人): GBK编码<->Unicode编码<->BIG5编码, 所以有:

 A. GBK编码简体部分<->GBK编码繁体部分          变成: GBK编码简体部分<--LCMapStringA-->GBK编码繁体部分B. GBK编码简体部分<->Unicode编码繁体部分        变成: GBK编码简体部分<--LCMapStringA-->GBK编码繁体部分<->Unicode编码繁体部分C. GBK编码简体部分<->BIG5编码                 变成: GBK编码简体部分<--LCMapStringA-->GBK编码繁体部分<->Unicode编码繁体部分<->BIG5编码D. Unicode编码简体部分<->GBK编码繁体部分       变成: Unicode编码简体部分<->GBK编码简体部分<--LCMapStringA-->GBK编码繁体部分E. Unicode编码简体部分<->Unicode编码繁体部分  变成: Unicode编码简体部分<->GBK编码简体部分<--LCMapStringA-->GBK编码繁体部分<->Unicode编码繁体部分F. Unicode编码简体部分<->BIG5编码               变成: Unicode编码简体部分<->GBK编码简体部分<--LCMapStringA-->GBK编码繁体部分<->Unicode编码繁体部分<->BIG5编码

5. 简化一下: 因为GBK包含了简体中文和繁体中文, 所以只使用A. GBK编码简体部分<->GBK编码繁体部分, 然后其他的编码方式, 喜欢怎么转就怎么转.

参考: http://blog.csdn.net/bagboy_taobao_com/article/details/8594466

五. 实现

// #define LCMAP_SIMPLIFIED_CHINESE  0x02000000  // map traditional chinese to simplified chinese
// #define LCMAP_TRADITIONAL_CHINESE 0x04000000  // map simplified chinese to traditional chinese
char* TSTransform(const char* pStrSrc, int nToTS)
{LCID lcid = MAKELCID(MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),SORT_CHINESE_PRC);int nLength = LCMapStringA(lcid, nToTS, pStrSrc, -1, NULL, 0);char* pBuffer = new char[nLength + 1];memset(pBuffer, 0, nLength + 1);LCMapStringA(lcid, nToTS, pStrSrc, -1, pBuffer, nLength);          // 繁体转简体return pBuffer;
}// 繁体中文转换成简体中文(基于GBK编码)
char* TraditionalToSimplified(const char* pStrTraditional)
{return TSTransform(pStrTraditional, LCMAP_SIMPLIFIED_CHINESE);
}// 简体中文转换成繁体中文(基于GBK编码)
char* SimplifiedToTraditional(const char* pStrSimplified)
{return TSTransform(pStrSimplified, LCMAP_TRADITIONAL_CHINESE);
}int _tmain(int argc, _TCHAR* argv[])
{std::string strGB2312 = "你好, 中国!";char* pS = SimplifiedToTraditional(strGB2312.c_str());char* pT = TraditionalToSimplified(pS);   return 0;
}

文档说明:
http://msdn.microsoft.com/en-us/library/cc233968.aspx
http://msdn.microsoft.com/en-us/library/dd318700(VS.85).aspx

另看:
编码了解:  http://blog.csdn.net/bagboy_taobao_com/article/details/42294097
编码转换实现代码: http://blog.csdn.net/bagboy_taobao_com/article/details/8594466



简体中文与繁体中文互转相关推荐

  1. 简体中文转换为繁体中文

    <? /***********************************************************************                       ...

  2. 简体中文与繁体中文之间的转换

    刚开发玩的一个项目要将简体中文转换为繁体中文并生成txt文档传送到服务器,但是之前一直没接触过,这次算是费尽周折总算搞定! 今天把这个总结一下保存下来方便以后的查询,也方便大家共同进步 首相是将简体中 ...

  3. java获取系统语言(区分简体中文和繁体中文)

    2019独角兽企业重金招聘Python工程师标准>>> 之前做android应用时遇到过一个问题,就是根据语言的不同而显示不同的内容 网上很多代码都是错误的,起码无法区分简体和繁体, ...

  4. html代码复制繁体,JavaScript_简体中文转换繁体中文(实现代码),复制代码 代码如下:var Default_is - phpStudy...

    简体中文转换繁体中文(实现代码) var Default_isFT = 0        //默认是否繁体,0-简体,1-繁体 var StranIt_Delay = 50 //翻译延时毫秒(设这个的 ...

  5. opencc解决简体中文与繁体中文转换问题【python】

    1.Opencc-python 今天学习文本分析中偶然想到繁体中文要如何分割的问题,于是联想到将繁体中文先转换为简体中文,查过网上的资料后发现比较好用的是opencc-python,以及下载zh_wi ...

  6. php 简转繁体,PHP_简体中文转换为繁体中文的PHP函数,感谢网友Keyes提供移植用的Delph - phpStudy...

    简体中文转换为繁体中文的PHP函数 感谢网友Keyes提供移植用的Delphi源代码.其调用方式为$txt=gbtobig5($txt). (注:源代码中的include "data_gb. ...

  7. java判断简体和繁体字_java获取系统语言(区分简体中文和繁体中文) | 学步园...

    之前做android应用时遇到过一个问题,就是根据语言的不同而显示不同的内容 网上很多代码都是错误的,起码无法区分简体和繁体,这里给出一种方法 不涉及android任何知识,所以就归类到java这边了 ...

  8. Camunda Modeler汉化添加简体中文和繁体中文支持

    Camunda Modeler官方是只支持英文的,通过多语言插件是可以实现多语言支持的,方法如下: 1.首先Camunda Modeler的安装目录,camunda-modeler-4.12.0-wi ...

  9. java 取系统语言_java获取系统语言(区分简体中文和繁体中文) .

    之前做android应用时遇到过一个问题,就是根据语言的不同而显示不同的内容 网上很多代码都是错误的,起码无法区分简体和繁体,这里给出一种方法 不涉及android任何知识,所以就归类到java这边了 ...

最新文章

  1. Mybatis操作主体流程
  2. 以array开头的php函数,PHP函数、数组
  3. Struts2.3.4.1+Spring3.2.3+Hibernate4.1.9整合
  4. 江南山区腊味香 年味浓
  5. 数据中心加速,一文说清FPGA与GPU、ASIC目前的竞争格局
  6. 讲故事的用户故事样例之1
  7. icmp消息类型报告传输_ICMP消息的类型和ICMP消息格式
  8. DevOps交付模式下,软件测试的那些事
  9. Json——使用Json jar包实现Json字符串与Java对象或集合之间的互相转换
  10. Pyhont 高阶函数
  11. 阶段3 3.SpringMVC·_07.SSM整合案例_01.ssm整合说明
  12. 活动回顾 | 大咖云集“开源安全治理模型和工具”线上研讨会
  13. 软件充值功能测试点有哪些?以手机话费充值为例
  14. 按Right-BICEP的测试用例
  15. c++ struct 中定义函数
  16. C++学习笔记:fstream,ifstream和oftream的区别
  17. python计算化学浓度_计算化学操作流程-孙磊.pdf
  18. 2022年山东省安全员C证考试题及在线模拟考试
  19. 每日辣评:华为麦芒8溢价太高?百度又有高层即将离职?
  20. 移动通信网络规划:室内覆盖系统概述

热门文章

  1. 我的世界java版如何看坐标_我的世界中怎么查看坐标,坐标系统详解
  2. Java 浅拷贝和深拷贝的理解和实现方式
  3. 主流各云平台主机性能对比
  4. 划分,全概率公式,贝叶斯公式证明
  5. 天创速盈带你了解拼多多新店运营技巧
  6. C#把月日年帶有 AM、PM的时间格式转换为正常时间格式
  7. 小程序项目从Hbuilder转移到vscode步骤
  8. AD16常用命令高效编辑命令
  9. 过滤百度广告+搜索热点+adblock规则快速入门
  10. 什么A股,B股,H股?什么是红筹股,蓝筹股?