最近老是遇到遇到中文编码转换的问题,但是又不是所有的环境都提供编码转换的工具。所以不如自己把整个汉字编码库搞下来,再逐个查询。

  • window的默认编码是GBK,GBK向下兼容GB2312
  • GBK:双字节编码,范围0x8140-0xFEFE,23940个码位,21003个汉字.
  • GB2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;GB2312简体中文编码表 - 常用参考表对照表 - 脚本之家在线工具 (jb51.net)

对各个编码的解释看大佬的文章:UTF-8编码规则_我是谁的博客-CSDN博客_utf8编码

可以相互佐证。至于百度到的UTF-8计算工具,它们只是把Unicode的编码放出来,Unicode还分大头和小头呢,根本就不是UTF-8的编码,中文的UTF-8编码至少是3个字节的。

常用字用GB2312就足够,内存不大,甚至可以放到单片机上。

刚好用了 下QT,qt有转码用的库,GB2312的编码是按顺序排列,从第1区到第87区,10~15区没编码。所以可以直接for循环生成再转换就完事了。顺便做个工具后面方便使用GB2312,UTF8,UCS2汉字编码生成与转换工具-互联网文档类资源-CSDN下载。

使用界面:

编码转换

按区生成

生成的库C库:使用方法,比如已经编码x,编码方式为GB2312,先比对X在GB2312库的位置,找到位置下标,这个也是x在其它库的位置下标

/** 单个编码转换,转换失败的话返回原始编码* code:输入原始编码* intype:原始编码类型:下面其中的一个* GB2312,* UTF8,* UCS2_BIG,* UCS2_LITTLE,* wanttype:目标编码类型,下面其中的一个* GB2312,* UTF8,* UCS2_BIG,* UCS2_LITTLE,*
*/
uint32_t textCode::textCodeConvet(uint32_t code, textCode::CodeType intype, textCode::CodeType wanttype)
{const uint32_t *intp; //懒得做16,8位的区分了,使用32位的,存储估计要炸const uint32_t *wantp;//懒得做16,8位的区分了,使用32位的,存储估计要炸switch (intype) { //区分输入代码库case textCode::GB2312:intp=_GB2312_1_87;break;case textCode::UTF8:intp=_UTF8_1_87;break;case textCode::UCS2_BIG:intp=_UCS2_Big_1_87;break;case textCode::UCS2_LITTLE:intp=_UCS2_Little_1_87;break;default:return code;break;}switch (wanttype) {//区分输出代码库case textCode::GB2312:wantp=_GB2312_1_87;break;case textCode::UTF8:wantp=_UTF8_1_87;break;case textCode::UCS2_BIG:wantp=_UCS2_Big_1_87;break;case textCode::UCS2_LITTLE:wantp=_UCS2_Little_1_87;break;default:return code;break;}if((code & 0x00ff)&&(code & 0xff00))// 高位,低位都不为零for(uint32_t i=0;i<TEXTCODE_SIZE;i++)//TEXTCODE_SIZE 7614{if(intp[i] == code) //找到编码的位置{return wantp[i];//输出对应编码}}return code;
}

第16区的中文编码,加了中文字符注释后超过数字限制了。。。。完整的去下载吧https://download.csdn.net/download/u013866683/75642756

#include <stdint.h>
// GB2312原始编码从0XA1A0到0XFEFF。从01到94个区,其中10~15,(6个区)没有编码,88~94区(7区)没有编码。
//有效编码区只有81个区,分别是01~09区、6~87区
//每个区有从0xXXA1到0xXXDE,A0和EF都没有编码,有效编码94个
//所以共有编码个数94*81=7614。
// GB2312的编码为两个字节,转UTF编码后有3个字节,转UCS编码有2个字节。
// Unicode编码会用UCS-BIG或者UCS-LITTLE(大端或者小端),它们的区别就是高低字节位置不同。
//比如中文编码
//  “哈”:
//  GB2312 0xB9FE
//  UTF-8  0xE59388
//  UCS-BIG  0x54C8
//  UCS-LITTLE 0xC854
const uint32_t _GB2312_16_16[]={ //前缀0xB0A1, 0xB0A2, 0xB0A3, 0xB0A4, 0xB0A5, 0xB0A6, 0xB0A7, 0xB0A8, 0xB0A9, 0xB0AA, 0xB0AB, 0xB0AC, 0xB0AD, 0xB0AE, 0xB0AF,   //第16区: B0A0 : 啊,阿,埃,挨,哎,唉,哀,皑,癌,蔼,矮,艾,碍,爱,隘, 0xB0B0, 0xB0B1, 0xB0B2, 0xB0B3, 0xB0B4, 0xB0B5, 0xB0B6, 0xB0B7, 0xB0B8, 0xB0B9, 0xB0BA, 0xB0BB, 0xB0BC, 0xB0BD, 0xB0BE, 0xB0BF,   //第16区: B0B0 : 鞍,氨,安,俺,按,暗,岸,胺,案,肮,昂,盎,凹,敖,熬,翱, 0xB0C0, 0xB0C1, 0xB0C2, 0xB0C3, 0xB0C4, 0xB0C5, 0xB0C6, 0xB0C7, 0xB0C8, 0xB0C9, 0xB0CA, 0xB0CB, 0xB0CC, 0xB0CD, 0xB0CE, 0xB0CF,     //第16区: B0C0 : 袄,傲,奥,懊,澳,芭,捌,扒,叭,吧,笆,八,疤,巴,拔,跋, 0xB0D0, 0xB0D1, 0xB0D2, 0xB0D3, 0xB0D4, 0xB0D5, 0xB0D6, 0xB0D7, 0xB0D8, 0xB0D9, 0xB0DA, 0xB0DB, 0xB0DC, 0xB0DD, 0xB0DE, 0xB0DF,     //第16区: B0D0 : 靶,把,耙,坝,霸,罢,爸,白,柏,百,摆,佰,败,拜,稗,斑, 0xB0E0, 0xB0E1, 0xB0E2, 0xB0E3, 0xB0E4, 0xB0E5, 0xB0E6, 0xB0E7, 0xB0E8, 0xB0E9, 0xB0EA, 0xB0EB, 0xB0EC, 0xB0ED, 0xB0EE, 0xB0EF,     //第16区: B0E0 : 班,搬,扳,般,颁,板,版,扮,拌,伴,瓣,半,办,绊,邦,帮, 0xB0F0, 0xB0F1, 0xB0F2, 0xB0F3, 0xB0F4, 0xB0F5, 0xB0F6, 0xB0F7, 0xB0F8, 0xB0F9, 0xB0FA, 0xB0FB, 0xB0FC, 0xB0FD, 0xB0FE,     //第16区: B0F0 : 梆,榜,膀,绑,棒,磅,蚌,镑,傍,谤,苞,胞,包,褒,剥, };//后缀
const uint32_t _UTF8_16_16[]={ //前缀0xE5958A, 0xE998BF, 0xE59F83, 0xE68CA8, 0xE5938E, 0xE59489, 0xE59380, 0xE79A91, 0xE7998C, 0xE894BC, 0xE79FAE, 0xE889BE, 0xE7A28D, 0xE788B1, 0xE99A98,   //第16区: B0A0 : 啊,阿,埃,挨,哎,唉,哀,皑,癌,蔼,矮,艾,碍,爱,隘, 0xE99E8D, 0xE6B0A8, 0xE5AE89, 0xE4BFBA, 0xE68C89, 0xE69A97, 0xE5B2B8, 0xE883BA, 0xE6A188, 0xE882AE, 0xE69882, 0xE79B8E, 0xE587B9, 0xE69596, 0xE786AC, 0xE7BFB1,   //第16区: B0B0 : 鞍,氨,安,俺,按,暗,岸,胺,案,肮,昂,盎,凹,敖,熬,翱, 0xE8A284, 0xE582B2, 0xE5A5A5, 0xE6878A, 0xE6BEB3, 0xE88AAD, 0xE68D8C, 0xE68992, 0xE58FAD, 0xE590A7, 0xE7AC86, 0xE585AB, 0xE796A4, 0xE5B7B4, 0xE68B94, 0xE8B78B,     //第16区: B0C0 : 袄,傲,奥,懊,澳,芭,捌,扒,叭,吧,笆,八,疤,巴,拔,跋, 0xE99DB6, 0xE68A8A, 0xE88099, 0xE59D9D, 0xE99CB8, 0xE7BDA2, 0xE788B8, 0xE799BD, 0xE69F8F, 0xE799BE, 0xE69186, 0xE4BDB0, 0xE8B4A5, 0xE68B9C, 0xE7A897, 0xE69691,     //第16区: B0D0 : 靶,把,耙,坝,霸,罢,爸,白,柏,百,摆,佰,败,拜,稗,斑, 0xE78FAD, 0xE690AC, 0xE689B3, 0xE888AC, 0xE9A281, 0xE69DBF, 0xE78988, 0xE689AE, 0xE68B8C, 0xE4BCB4, 0xE793A3, 0xE58D8A, 0xE58A9E, 0xE7BB8A, 0xE982A6, 0xE5B8AE,     //第16区: B0E0 : 班,搬,扳,般,颁,板,版,扮,拌,伴,瓣,半,办,绊,邦,帮, 0xE6A286, 0xE6A69C, 0xE88680, 0xE7BB91, 0xE6A392, 0xE7A385, 0xE89A8C, 0xE99591, 0xE5828D, 0xE8B0A4, 0xE88B9E, 0xE8839E, 0xE58C85, 0xE8A492, 0xE589A5,   //第16区: B0F0 : 梆,榜,膀,绑,棒,磅,蚌,镑,傍,谤,苞,胞,包,褒,剥, };//后缀
const uint32_t _UCS2_Big_16_16[]={ //前缀0x554A,0x963F,0x57C3,0x6328,0x54CE,0x559,0x54C0,0x7691,0x764C,0x853C,0x77EE,0x827E,0x788D,0x7231,0x9698,    //第16区: B0A0 : 啊,阿,埃,挨,哎,唉,哀,皑,癌,蔼,矮,艾,碍,爱,隘, 0x978D,0x6C28,0x5B89,0x4FFA,0x639,0x6697,0x5CB8,0x80FA,0x6848,0x80AE,0x662,0x76CE,0x51F9,0x6556,0x71AC,0x7FF1,    //第16区: B0B0 : 鞍,氨,安,俺,按,暗,岸,胺,案,肮,昂,盎,凹,敖,熬,翱, 0x8884,0x50B2,0x5965,0x61CA,0x6FB3,0x82AD,0x634C,0x6252,0x53ED,0x5427,0x7B6,0x516B,0x75A4,0x5DF4,0x62D4,0x8DCB, //第16区: B0C0 : 袄,傲,奥,懊,澳,芭,捌,扒,叭,吧,笆,八,疤,巴,拔,跋, 0x9776,0x628A,0x8019,0x575D,0x9738,0x7F62,0x7238,0x767D,0x67CF,0x767E,0x6446,0x4F70,0x8D25,0x62DC,0x7A17,0x6591,    //第16区: B0D0 : 靶,把,耙,坝,霸,罢,爸,白,柏,百,摆,佰,败,拜,稗,斑, 0x73ED,0x642C,0x6273,0x822C,0x9881,0x677F,0x7248,0x626E,0x62CC,0x4F34,0x74E3,0x534A,0x529E,0x7ECA,0x90A6,0x5E2E,    //第16区: B0E0 : 班,搬,扳,般,颁,板,版,扮,拌,伴,瓣,半,办,绊,邦,帮, 0x6886,0x699C,0x8180,0x7ED1,0x68D2,0x78C5,0x868C,0x9551,0x508D,0x8C24,0x82DE,0x80DE,0x535,0x8912,0x5265,    //第16区: B0F0 : 梆,榜,膀,绑,棒,磅,蚌,镑,傍,谤,苞,胞,包,褒,剥, };//后缀
const uint32_t _UCS2_Little_16_16[]={ //前缀0x4A55,0x3F96,0xC357,0x2863,0xCE54,0x955,0xC054,0x9176,0x4C76,0x3C85,0xEE77,0x7E82,0x8D78,0x3172,0x9896, //第16区: B0A0 : 啊,阿,埃,挨,哎,唉,哀,皑,癌,蔼,矮,艾,碍,爱,隘, 0x8D97,0x286C,0x895B,0xFA4F,0x963,0x9766,0xB85C,0xFA80,0x4868,0xAE80,0x266,0xCE76,0xF951,0x5665,0xAC71,0xF17F,    //第16区: B0B0 : 鞍,氨,安,俺,按,暗,岸,胺,案,肮,昂,盎,凹,敖,熬,翱, 0x8488,0xB250,0x6559,0xCA61,0xB36F,0xAD82,0x4C63,0x5262,0xED53,0x2754,0x67B,0x6B51,0xA475,0xF45D,0xD462,0xCB8D, //第16区: B0C0 : 袄,傲,奥,懊,澳,芭,捌,扒,叭,吧,笆,八,疤,巴,拔,跋, 0x7697,0x8A62,0x1980,0x5D57,0x3897,0x627F,0x3872,0x7D76,0xCF67,0x7E76,0x4664,0x704F,0x258D,0xDC62,0x177A,0x9165,    //第16区: B0D0 : 靶,把,耙,坝,霸,罢,爸,白,柏,百,摆,佰,败,拜,稗,斑, 0xED73,0x2C64,0x7362,0x2C82,0x8198,0x7F67,0x4872,0x6E62,0xCC62,0x344F,0xE374,0x4A53,0x9E52,0xCA7E,0xA690,0x2E5E,    //第16区: B0E0 : 班,搬,扳,般,颁,板,版,扮,拌,伴,瓣,半,办,绊,邦,帮, 0x8668,0x9C69,0x8081,0xD17E,0xD268,0xC578,0x8C86,0x5195,0x8D50,0x248C,0xDE82,0xDE80,0x553,0x1289,0x6552,    //第16区: B0F0 : 梆,榜,膀,绑,棒,磅,蚌,镑,傍,谤,苞,胞,包,褒,剥, };//后缀

GB2312 UTF8 UCS2汉字编码对应表相关推荐

  1. 计算机ucs汉字编码,字符编码基础知识 - Unicode,UCS,GBK,GB2312,UTF-8

    字符编码基础知识- Unicode,UCS,GBK,GB2312,UTF-8 最近遇到一个Unicode和UTF-8关系比较的问题,之前在处理中文显示时也遇到过类似的问题,于是花时间学习了一下,在此做 ...

  2. java ucs2转utf8_Unicode,UTF8,GB2312,UCS2,GBK之间的转换

    Unicode,UTF8,GB2312,UCS2,GBK之间的转换 平时用到的几种编码格式转换.平时用的不是很多.但是在做短信协议的时候,就经常遇到了.这段时间做短信平台接口,总结了几个,也不是很全. ...

  3. 【JAVA编码专题】JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础

    这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...

  4. 字节 字符 utf-8 unicode 以及提交表单验证字符长度 .......

    通常我们所说的字其实准确的说是指字符, 字符是指计算机中使用的字母.数字.字和符号,包括:1.2.3.A.B.C.~!·#¥%---*()--+等等.不同的编码格式下汉字的字节是不同的,比如GBK中是 ...

  5. 如何设置mysql字符集支持utf-8 和gbk_mysql建表的时候设置表里面的字段的字符集是utf-8要怎么设置?默认建好后我去mysql里看字符集都是gbk...

    展开全部 1.建表时指定字符集utf-8: CREATE TABLE 表名 (  `id` TINYINT( 255 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMAR ...

  6. 字符编码的故事(ASCII ISO GBK GB2312 UTF-8)

    转载自:http://yuncode.net/article/a_520afe25b065d13 另有一篇对"UTF-8 GBK UTF8 GB2312 之间的区别和关系"描述比较 ...

  7. android gb2312 utf-8,不同编码页面之间用form传值出现乱码问题解决方案 utf-8 到 gb2312...

    相信有人也曾遇到过这种问题,今天将这个问题稍作整理发布出来. 由于编码的问题传值出现乱码,一看到这样的情况,我们首先想到的是线面的两种解决办法: 方案一:在接收参数页面进行转码  (这是较为理想的解决 ...

  8. php 英文单词 数,【PHP】统计中英文单词数(GB2312/UTF-8编码)

    英文单词的统计可以直接用php原生的函数str_word_count来进行统计.但这个函数对于中文汉字显得无能为力,无法准确统计到汉字个数. 解决办法是根据汉字的编码规则,自己来实现中文汉字数统计和中 ...

  9. ANSI/UTF-8/UCS2(UTF-16),以及回车换行

    最近遇到一个linux 平台上invisible character (0x1d)引起的数据装载失败问题,正好借此机会整理一下字符编码的相关知识. 回车/换行: ================= 顾 ...

最新文章

  1. c#中结构与类的区别
  2. 某口腔app发现了不友善词汇(f*ckMobile)
  3. PAT A1030 动态规划
  4. [pasecactf_2019]tornado_casino
  5. 先进pid控制matlab仿真程序,先进PID控制Matlab仿真第4版-仿真程序-上交
  6. OpenCV学习笔记之改变图像的对比度和亮度
  7. java appender_log4j的Appenders配置方法
  8. js for foreach 快慢_js基本搜索算法实现与170万条数据下的性能测试
  9. 三刺激值计算公式_常用的车削、铣削和钻削计算公式,转走不谢
  10. 嫌学校 App烂,极客父母做了开源版本
  11. Java 常用对象-System类
  12. session和cookie详解
  13. Windows系统 修改 dns
  14. android系统相机的使用、及解决拍照闪退的问题
  15. 7月23日09点,上海,PMCamp的产品经理大会
  16. 功率谱和功率谱密度-MATLAB
  17. IEEE会议latex模板参考文献转为bibitem
  18. 从PHP 5到PHP 7性能全评测(含未发布的JIT版PHP 8对比)
  19. 你想过吗,为什么说面向对象最符合人的思维?
  20. matlab控制系统仿真论文,基于MATLAB的过程控制系统仿真毕业设计论文.doc

热门文章

  1. SAP Spartacus autofocus directive,如何锁住使用了directive的元素本身?
  2. SAP Spartacus store里引用的library是如何编译出来的
  3. SAP Spartacus如何创建自定义route页面
  4. SAP Commerce(原Hybris)的订单处理框架和SAP CRM One Order框架
  5. Angular self study 3 - data binding
  6. How is JerryMaster.view.xml being loaded in WebIDE local test environment
  7. Opportunity在Fiori cloud system上编辑之后超时的根源分析
  8. SAP CRM Distribution Chain数据模型
  9. SAP Spartacus organization unit里org list的focus实现问题
  10. 语义化版本(semantic versioning)机制里的一些范围标识符