字符编码之间的相互转换 UTF8与GBK
常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、...
ASCIIASCII码是7位编码,编码范围是0x00-0x7F。
ASCII字符集包括英文字母、阿拉伯数字和标点符号等字符。
其中0x00-0x20和0x7F共33个控制字符。
只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位。
HZ字符编码就是早期为了在只支持7位ASCII系统中传输中文而设计的编码。
早期很多邮件系统也只支持ASCII编码,为了传输中文邮件必须使用BASE64或者其他编码方式。
GB2312GB2312是基于区位码设计的,区位码把编码表分为94个区,每个区对应94个位,每个字符的区号和位号组合起来就是该汉字的区位码。
区位码一般用10进制数来表示,如1601就表示16区1位,对应的字符是“啊”。
在区位码的区号和位号上分别加上0xA0就得到了GB2312编码。
区位码中01-09区是符号、数字区,16-87区是汉字区,10-15和88-94是未定义的空白区。
它将收录的汉字分成两级:第一级是常用汉字计3755个,置于16-55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字计3008个,置于56-87区,按部首/笔画顺序排列。
一级汉字是按照拼音排序的,这个就可以得到某个拼音在一级汉字区位中的范围,很多根据汉字可以得到拼音的程序就是根据这个原理编写的。
GB2312字符集中除常用简体汉字字符外还包括希腊字母、日文平假名及片假名字母、俄语西里尔字母等字符,未收录繁体中文汉字和一些生僻字。
可以用繁体汉字测试某些系统是不是只支持GB2312编码。
GB2312的编码范围是0xA1A1-0x7E7E,去掉未定义的区域之后可以理解为实际编码范围是0xA1A1-0xF7FE。
EUC-CN可以理解为GB2312的别名,和GB2312完全相同。
区位码更应该认为是字符集的定义,定义了所收录的字符和字符位置,而GB2312及EUC-CN是实际计算机环境中支持这种字符集的编码。
HZ和ISO- 2022-CN是对应区位码字符集的另外两种编码,都是用7位编码空间来支持汉字。
python中unicode、utf8、gbk等编码问题
python中unicode、utf8、gbk等编码问题为什么会报错“UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)”?本⽂就来研究⼀下这个问题。
字符串在Python内部的表⽰是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另⼀种编码。
decode的作⽤是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表⽰将gb2312编码的字符串str1转换成unicode编码。
encode的作⽤是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表⽰将unicode编码的字符串str2转换成gb2312编码。
因此,转码的时候⼀定要先搞明⽩,字符串str是什么编码,然后decode成unicode,然后再encode成其他编码代码中字符串的默认编码与代码⽂件本⾝的编码⼀致。
如:s='中⽂'如果是在utf8的⽂件中,该字符串就是utf8编码,如果是在gb2312的⽂件中,则其编码为gb2312。
这种情况下,要进⾏编码转换,都需要先⽤decode⽅法将其转换成unicode编码,再使⽤encode⽅法将其转换成其他编码。
通常,在没有指定特定的编码⽅式时,都是使⽤的系统默认编码创建的代码⽂件。
如果字符串是这样定义:s=u'中⽂'则该字符串的编码就被指定为unicode了,即python的内部编码,⽽与代码⽂件本⾝的编码⽆关。
因此,对于这种情况做编码转换,只需要直接使⽤encode⽅法将其转换成指定编码即可。
GB2312、GBK与UTF-8的区别
GB2312、GBK与UTF-8的区别这是一个异常经典的问题,有无数的新手站长每天都在百度这个问题,而我,作为一个“伪老手”站长,在明白这个这个问题的基础上,有必要详细的解答一下。
首先,我们要明白,GB2312、GBK和UTF-8都是一种字符编码,除此之外,还有好多字符编码。
只是对于我们中国人的网站来说,用这三种编码比较多。
简单的说一下,为什么要用编码,在计算机内,储存文本信息用ASC II码,每一个字符对应着唯一的ASCII码。
最初计算机是由美国发明的,他们也用的是键盘和上面的字母,所以他们的字符ASCII好解决。
但是我们中国的就不同了,每个汉字要对应唯一的ASCII码。
这样,就出来了国家制定的字符编码标准:GB2312、GBK等。
其他国家,其他语言也有他们对应的编码标准。
GB 就是国标的意思,GB2312和GBK主要用于汉字的编码,而UTF-8是全世界通用的。
意思就是说,如果你的网页主要面对使用汉语的中国人的话,使用GB2312和GBK非常好,文字储存体积要小,有一些优点。
如果你的网页要面向世界的话,你再用GB2312和GBK作为网页编码的话,有些电脑上的浏览器没有这种编码,你的网页汉字内容就会变成无法识别的乱码。
它们通常用在网页的meta标签内,例如:<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″/>,表示这个页面使用的是GB2312编码。
这个信息是给浏览器看的,浏览器会优先考虑使用从网页头部提取出来的编码信息对网页进行解码。
当然,我们也可以强制浏览器使用某种编码解释网页,这样我们就看到了传说中的乱码。
请看下图IE浏览器:百度首页使用的是GB2312编码,我们可以看到现在是正常的。
我们右击页面,选择“编码”->“其他”->“Unicode(UTF-8)”,意思就是强制浏览器使用UTF-8的编码方式解析页面,我们可以看到奇迹发生了:百度页面上所有的汉字都变成了乱码。
Unicode,UTF8,GB2312,UCS2,GBK
unsigned short unicode;
unsigned char bytes[4] = {0};
int nbytes = 0;
int i = 0, j = 0;
int len=0;
if((ucs2 != NULL) && (utf8 != NULL))
LPCTSTR UnicodeToUTF8Char(LPTSTR pOut,WCHAR wcText)
{
// 注意 WCHAR高低字的顺序,低字节在前,高字节在后
LPTSTR pchar = (LPTSTR)&wcText;
pOut[0] = (0xE0 | ((pchar[1] & 0xF0) >> 4));
bytes[0] = ((unicode << 2) & 0x1f00 | 0xc000) >> 8;
}
else
{
nbytes = 3;
bytes[2] = (unicode & 0x3f) | 0x80;
{
LPCTSTR lpReturn,pGB2312Cursor,pGB2312InputEnd;
WCHAR wcBuffer;
lpReturn = (LPCTSTR)pWebGB2312Out;
pGB2312Cursor = (LPTSTR)pGB2312Input;
pGB2312InputEnd= pGB2312Cursor + GB2312Len;
//////////////////////////////////////////////////////////////////////////////
GBK编码和UTF-8编码的交集
在处理UTF8-->GBK的转换中会遇到一个问题,就是某些GBK字符会与UTF-8中2个字节编码的字符110xxxxx 10yyyyyy产生交集,从而导致这些编码被当成是UTF-8编码处理,进行了转码,从而出现乱码。
下面列出了GBK编码和UTF-8编码有交集的情况,其中第二列(如0xc080)表示编码,第一个汉字是这个编码被当成GBK理解时对应的汉字,[]中是编码被当成UTF-8理解时对应的字符。
对应的结果为failed的行,表示被理解成UTF-8编码,转成GBK的时候,没有对应GBK编码的情况。
Convert 0xc080, 纮to []Convert 0xc081, 纴to [ ]Convert 0xc082, 纻to [ ]Convert 0xc083, 纼to [ ]Convert 0xc084, 绖to [ ]Convert 0xc085, 绤to [ ]Convert 0xc086, 绬to [ ]Convert 0xc087, 绹to [ ]Convert 0xc088, 缊to [ ]Convert 0xc089, 缐to [ ]Convert 0xc08f, 缽to [ ]Convert 0xc090, 缾to [ ]Convert 0xc091, 缿to [ ]Convert 0xc092, 罀to [ ]Convert 0xc093, 罁to [ ]Convert 0xc094, 罃to [ ]Convert 0xc095, 罆to [ ]Convert 0xc096, 罇to [ ]Convert 0xc097, 罈to [ ]Convert 0xc098, 罉to [ ]Convert 0xc099, 罊to [ ]Convert 0xc09a, 罋to [ ]Convert 0xc09b, 罌to [ ]Convert 0xc09c, 罍to [ ]Convert 0xc09d, 罎to [ ]Convert 0xc09e, 罏to [-]Convert 0xc09f, 罒to []Convert 0xc0a0, 罓to [ ]Convert 0xc0a1, 馈to [!]Convert 0xc0a2, 愧to ["]Convert 0xc0a3, 溃to [#]Convert 0xc0a4, 坤to [$]Convert 0xc0a5, 昆to [%]Convert 0xc0a6, 捆to [&]Convert 0xc0a7, 困to [']Convert 0xc0a8, 括to [(]Convert 0xc0aa, 廓to [*] Convert 0xc0ab, 阔to [+] Convert 0xc0ac, 垃to [,] Convert 0xc0ad, 拉to [-] Convert 0xc0ae, 喇to [.] Convert 0xc0af, 蜡to [/] Convert 0xc0b0, 腊to [0] Convert 0xc0b1, 辣to [1] Convert 0xc0b2, 啦to [2] Convert 0xc0b3, 莱to [3] Convert 0xc0b4, 来to [4] Convert 0xc0b5, 赖to [5] Convert 0xc0b6, 蓝to [6] Convert 0xc0b7, 婪to [7] Convert 0xc0b8, 栏to [8] Convert 0xc0b9, 拦to [9] Convert 0xc0ba, 篮to [:] Convert 0xc0bb, 阑to [;] Convert 0xc0bc, 兰to [<] Convert 0xc0bd, 澜to [=] Convert 0xc0be, 谰to [>] Convert 0xc0bf, 揽to [?] Convert 0xc180, 羳to [@] Convert 0xc181, 羴to [A] Convert 0xc182, 羵to [B] Convert 0xc183, 羶to [C] Convert 0xc184, 羷to [D] Convert 0xc185, 羺to [E] Convert 0xc186, 羻to [F] Convert 0xc187, 羾to [G] Convert 0xc188, 翀to [H] Convert 0xc189, 翂to [I] Convert 0xc18a, 翃to [J] Convert 0xc18b, 翄to [K] Convert 0xc18c, 翆to [L] Convert 0xc18d, 翇to [M] Convert 0xc18e, 翈to [N] Convert 0xc18f, 翉to [O] Convert 0xc190, 翋to [P] Convert 0xc191, 翍to [Q] Convert 0xc192, 翏to [R] Convert 0xc193, 翐to [S] Convert 0xc194, 翑to [T]Convert 0xc196, 翓to [V] Convert 0xc197, 翖to [W] Convert 0xc198, 翗to [X] Convert 0xc199, 翙to [Y] Convert 0xc19a, 翚to [Z] Convert 0xc19b, 翛to [[] Convert 0xc19c, 翜to [\] Convert 0xc19d, 翝to []] Convert 0xc19e, 翞to [^] Convert 0xc19f, 翢to [_] Convert 0xc1a0, 翣to [`] Convert 0xc1a1, 痢to [a] Convert 0xc1a2, 立to [b] Convert 0xc1a3, 粒to [c] Convert 0xc1a4, 沥to [d] Convert 0xc1a5, 隶to [e] Convert 0xc1a6, 力to [f] Convert 0xc1a7, 璃to [g] Convert 0xc1a8, 哩to [h] Convert 0xc1a9, 俩to [i] Convert 0xc1aa, 联to [j] Convert 0xc1ab, 莲to [k] Convert 0xc1ac, 连to [l] Convert 0xc1ad, 镰to [m] Convert 0xc1ae, 廉to [n] Convert 0xc1af, 怜to [o] Convert 0xc1b0, 涟to [p] Convert 0xc1b1, 帘to [q] Convert 0xc1b2, 敛to [r] Convert 0xc1b3, 脸to [s] Convert 0xc1b4, 链to [t] Convert 0xc1b5, 恋to [u] Convert 0xc1b6, 炼to [v] Convert 0xc1b7, 练to [w] Convert 0xc1b8, 粮to [x] Convert 0xc1b9, 凉to [y] Convert 0xc1ba, 梁to [z] Convert 0xc1bb, 粱to [{] Convert 0xc1bc, 良to [|] Convert 0xc1bd, 两to [}] Convert 0xc1be, 辆to [~] Convert 0xc1bf, 量to [•] Convert 0xc280, 聙Failed!Convert 0xc282, 聜Failed! Convert 0xc283, 聝Failed! Convert 0xc284, 聞Failed! Convert 0xc285, 聟Failed! Convert 0xc286, 聠Failed! Convert 0xc287, 聡Failed! Convert 0xc288, 聢Failed! Convert 0xc289, 聣Failed! Convert 0xc28a, 聤Failed! Convert 0xc28b, 聥Failed! Convert 0xc28c, 聦Failed! Convert 0xc28d, 聧Failed! Convert 0xc28e, 聨Failed! Convert 0xc28f, 聫Failed! Convert 0xc290, 聬Failed! Convert 0xc291, 聭Failed! Convert 0xc292, 聮Failed! Convert 0xc293, 聯Failed! Convert 0xc294, 聰Failed! Convert 0xc295, 聲Failed! Convert 0xc296, 聳Failed! Convert 0xc297, 聴Failed! Convert 0xc298, 聵Failed! Convert 0xc299, 聶Failed! Convert 0xc29a, 職Failed! Convert 0xc29b, 聸Failed! Convert 0xc29c, 聹Failed! Convert 0xc29d, 聺Failed! Convert 0xc29e, 聻Failed! Convert 0xc29f, 聼Failed! Convert 0xc2a0, 聽Failed! Convert 0xc2a1, 隆Failed! Convert 0xc2a2, 垄Failed! Convert 0xc2a3, 拢Failed! Convert 0xc2a4, 陇to [¤] Convert 0xc2a5, 楼Failed! Convert 0xc2a6, 娄Failed! Convert 0xc2a7, 搂to [§] Convert 0xc2a8, 篓to [¨] Convert 0xc2a9, 漏Failed! Convert 0xc2aa, 陋Failed! Convert 0xc2ab, 芦Failed! Convert 0xc2ac, 卢Failed!Convert 0xc2ae, 庐Failed! Convert 0xc2af, 炉Failed! Convert 0xc2b0, 掳to [©] Convert 0xc2b1, 卤to [ª] Convert 0xc2b2, 虏Failed! Convert 0xc2b3, 鲁Failed! Convert 0xc2b4, 麓Failed! Convert 0xc2b5, 碌Failed! Convert 0xc2b6, 露Failed! Convert 0xc2b7, 路to [«] Convert 0xc2b8, 赂Failed! Convert 0xc2b9, 鹿Failed! Convert 0xc2ba, 潞Failed! Convert 0xc2bb, 禄Failed! Convert 0xc2bc, 录Failed! Convert 0xc2bd, 陆Failed! Convert 0xc2be, 戮Failed! Convert 0xc2bf, 驴Failed! Convert 0xc380, 脌Failed! Convert 0xc381, 脕Failed! Convert 0xc382, 脗Failed! Convert 0xc383, 脙Failed! Convert 0xc384, 脛Failed! Convert 0xc385, 脜Failed! Convert 0xc386, 脝Failed! Convert 0xc387, 脟Failed! Convert 0xc388, 脠Failed! Convert 0xc389, 脡Failed! Convert 0xc38a, 脢Failed! Convert 0xc38b, 脣Failed! Convert 0xc38c, 脤Failed! Convert 0xc38d, 脥Failed! Convert 0xc38e, 脦Failed! Convert 0xc38f, 脧Failed! Convert 0xc390, 脨Failed! Convert 0xc391, 脩Failed! Convert 0xc392, 脪Failed! Convert 0xc393, 脫Failed! Convert 0xc394, 脭Failed! Convert 0xc395, 脮Failed! Convert 0xc396, 脰Failed! Convert 0xc397, 脳to [¬] Convert 0xc398, 脴Failed!Convert 0xc39a, 脷Failed! Convert 0xc39b, 脹Failed! Convert 0xc39c, 脺Failed! Convert 0xc39d, 脻Failed! Convert 0xc39e, 脼Failed! Convert 0xc39f, 脽Failed! Convert 0xc3a0, 脿to [] Convert 0xc3a1, 谩to [®] Convert 0xc3a2, 芒Failed! Convert 0xc3a3, 茫Failed! Convert 0xc3a4, 盲Failed! Convert 0xc3a5, 氓Failed! Convert 0xc3a6, 忙Failed! Convert 0xc3a7, 莽Failed! Convert 0xc3a8, 猫to [¯] Convert 0xc3a9, 茅to [°] Convert 0xc3aa, 锚to [±] Convert 0xc3ab, 毛Failed! Convert 0xc3ac, 矛to [²] Convert 0xc3ad, 铆to [³] Convert 0xc3ae, 卯Failed! Convert 0xc3af, 茂Failed! Convert 0xc3b0, 冒Failed! Convert 0xc3b1, 帽Failed! Convert 0xc3b2, 貌to [´] Convert 0xc3b3, 贸to [µ] Convert 0xc3b4, 么Failed! Convert 0xc3b5, 玫Failed! Convert 0xc3b6, 枚Failed! Convert 0xc3b7, 梅to [¶] Convert 0xc3b8, 酶Failed! Convert 0xc3b9, 霉to [·] Convert 0xc3ba, 煤to [¸] Convert 0xc3bb, 没Failed! Convert 0xc3bc, 眉to [¹] Convert 0xc3bd, 媒Failed! Convert 0xc3be, 镁Failed! Convert 0xc3bf, 每Failed! Convert 0xc480, 膧Failed! Convert 0xc481, 膩to [º] Convert 0xc482, 膫Failed! Convert 0xc483, 膬Failed! Convert 0xc484, 膭Failed!Convert 0xc486, 膯Failed! Convert 0xc487, 膰Failed! Convert 0xc488, 膱Failed! Convert 0xc489, 膲Failed! Convert 0xc48a, 膴Failed! Convert 0xc48b, 膵Failed! Convert 0xc48c, 膶Failed! Convert 0xc48d, 膷Failed! Convert 0xc48e, 膸Failed! Convert 0xc48f, 膹Failed! Convert 0xc490, 膼Failed! Convert 0xc491, 膽Failed! Convert 0xc492, 膾Failed! Convert 0xc493, 膿to [»] Convert 0xc494, 臄Failed! Convert 0xc495, 臅Failed! Convert 0xc496, 臇Failed! Convert 0xc497, 臈Failed! Convert 0xc498, 臉Failed! Convert 0xc499, 臋Failed! Convert 0xc49a, 臍Failed! Convert 0xc49b, 臎to [¼] Convert 0xc49c, 臏Failed! Convert 0xc49d, 臐Failed! Convert 0xc49e, 臑Failed! Convert 0xc49f, 臒Failed! Convert 0xc4a0, 臓Failed! Convert 0xc4a1, 摹Failed! Convert 0xc4a2, 蘑Failed! Convert 0xc4a3, 模Failed! Convert 0xc4a4, 膜Failed! Convert 0xc4a5, 磨Failed! Convert 0xc4a6, 摩Failed! Convert 0xc4a7, 魔Failed! Convert 0xc4a8, 抹Failed! Convert 0xc4a9, 末Failed! Convert 0xc4aa, 莫Failed! Convert 0xc4ab, 墨to [½] Convert 0xc4ac, 默Failed! Convert 0xc4ad, 沫Failed! Convert 0xc4ae, 漠Failed! Convert 0xc4af, 寞Failed! Convert 0xc4b0, 陌Failed!Convert 0xc4b2, 牟Failed! Convert 0xc4b3, 某Failed! Convert 0xc4b4, 拇Failed! Convert 0xc4b5, 牡Failed! Convert 0xc4b6, 亩Failed! Convert 0xc4b7, 姆Failed! Convert 0xc4b8, 母Failed! Convert 0xc4b9, 墓Failed! Convert 0xc4ba, 暮Failed! Convert 0xc4bb, 幕Failed! Convert 0xc4bc, 募Failed! Convert 0xc4bd, 慕Failed! Convert 0xc4be, 木Failed! Convert 0xc4bf, 目Failed! Convert 0xc580, 艀Failed! Convert 0xc581, 艁Failed! Convert 0xc582, 艂Failed! Convert 0xc583, 艃Failed! Convert 0xc584, 艅to [¾] Convert 0xc585, 艆Failed! Convert 0xc586, 艈Failed! Convert 0xc587, 艊Failed! Convert 0xc588, 艌to [¿] Convert 0xc589, 艍Failed! Convert 0xc58a, 艎Failed! Convert 0xc58b, 艐Failed! Convert 0xc58c, 艑Failed! Convert 0xc58d, 艒to [À] Convert 0xc58e, 艓Failed! Convert 0xc58f, 艔Failed! Convert 0xc590, 艕Failed! Convert 0xc591, 艖Failed! Convert 0xc592, 艗Failed! Convert 0xc593, 艙Failed! Convert 0xc594, 艛Failed! Convert 0xc595, 艜Failed! Convert 0xc596, 艝Failed! Convert 0xc597, 艞Failed! Convert 0xc598, 艠Failed! Convert 0xc599, 艡Failed! Convert 0xc59a, 艢Failed! Convert 0xc59b, 艣Failed! Convert 0xc59c, 艤Failed!Convert 0xc59e, 艦Failed! Convert 0xc59f, 艧Failed! Convert 0xc5a0, 艩Failed! Convert 0xc5a1, 拧Failed! Convert 0xc5a2, 泞Failed! Convert 0xc5a3, 牛Failed! Convert 0xc5a4, 扭Failed! Convert 0xc5a5, 钮Failed! Convert 0xc5a6, 纽Failed! Convert 0xc5a7, 脓Failed! Convert 0xc5a8, 浓Failed! Convert 0xc5a9, 农Failed! Convert 0xc5aa, 弄Failed! Convert 0xc5ab, 奴to [Á] Convert 0xc5ac, 努Failed! Convert 0xc5ad, 怒Failed! Convert 0xc5ae, 女Failed! Convert 0xc5af, 暖Failed! Convert 0xc5b0, 虐Failed! Convert 0xc5b1, 疟Failed! Convert 0xc5b2, 挪Failed! Convert 0xc5b3, 懦Failed! Convert 0xc5b4, 糯Failed! Convert 0xc5b5, 诺Failed! Convert 0xc5b6, 哦Failed! Convert 0xc5b7, 欧Failed! Convert 0xc5b8, 鸥Failed! Convert 0xc5b9, 殴Failed! Convert 0xc5ba, 藕Failed! Convert 0xc5bb, 呕Failed! Convert 0xc5bc, 偶Failed! Convert 0xc5bd, 沤Failed! Convert 0xc5be, 啪Failed! Convert 0xc5bf, 趴Failed! Convert 0xc680, 苺Failed! Convert 0xc681, 苼Failed! Convert 0xc682, 苽Failed! Convert 0xc683, 苾Failed! Convert 0xc684, 苿Failed! Convert 0xc685, 茀Failed! Convert 0xc686, 茊Failed! Convert 0xc687, 茋Failed! Convert 0xc688, 茍Failed!Convert 0xc68a, 茒Failed! Convert 0xc68b, 茓Failed! Convert 0xc68c, 茖Failed! Convert 0xc68d, 茘Failed! Convert 0xc68e, 茙Failed! Convert 0xc68f, 茝Failed! Convert 0xc690, 茞Failed! Convert 0xc691, 茟Failed! Convert 0xc692, 茠Failed! Convert 0xc693, 茡Failed! Convert 0xc694, 茢Failed! Convert 0xc695, 茣Failed! Convert 0xc696, 茤Failed! Convert 0xc697, 茥Failed! Convert 0xc698, 茦Failed! Convert 0xc699, 茩Failed! Convert 0xc69a, 茪Failed! Convert 0xc69b, 茮Failed! Convert 0xc69c, 茰Failed! Convert 0xc69d, 茲Failed! Convert 0xc69e, 茷Failed! Convert 0xc69f, 茻Failed! Convert 0xc6a0, 茽Failed! Convert 0xc6a1, 啤Failed! Convert 0xc6a2, 脾Failed! Convert 0xc6a3, 疲Failed! Convert 0xc6a4, 皮Failed! Convert 0xc6a5, 匹Failed! Convert 0xc6a6, 痞Failed! Convert 0xc6a7, 僻Failed! Convert 0xc6a8, 屁Failed! Convert 0xc6a9, 譬Failed! Convert 0xc6aa, 篇Failed! Convert 0xc6ab, 偏Failed! Convert 0xc6ac, 片Failed! Convert 0xc6ad, 骗Failed! Convert 0xc6ae, 飘Failed! Convert 0xc6af, 漂Failed! Convert 0xc6b0, 瓢Failed! Convert 0xc6b1, 票Failed! Convert 0xc6b2, 撇Failed! Convert 0xc6b3, 瞥Failed! Convert 0xc6b4, 拼Failed!Convert 0xc6b6, 贫Failed! Convert 0xc6b7, 品Failed! Convert 0xc6b8, 聘Failed! Convert 0xc6b9, 乒Failed! Convert 0xc6ba, 坪Failed! Convert 0xc6bb, 苹Failed! Convert 0xc6bc, 萍Failed! Convert 0xc6bd, 平Failed! Convert 0xc6be, 凭Failed! Convert 0xc6bf, 瓶Failed! Convert 0xc780, 莯Failed! Convert 0xc781, 莵Failed! Convert 0xc782, 莻Failed! Convert 0xc783, 莾Failed! Convert 0xc784, 莿Failed! Convert 0xc785, 菂Failed! Convert 0xc786, 菃Failed! Convert 0xc787, 菄Failed! Convert 0xc788, 菆Failed! Convert 0xc789, 菈Failed! Convert 0xc78a, 菉Failed! Convert 0xc78b, 菋Failed! Convert 0xc78c, 菍Failed! Convert 0xc78d, 菎Failed! Convert 0xc78e, 菐to [Â] Convert 0xc78f, 菑Failed! Convert 0xc790, 菒to [Ã] Convert 0xc791, 菓Failed! Convert 0xc792, 菕to [Ä] Convert 0xc793, 菗Failed! Convert 0xc794, 菙to [Å] Convert 0xc795, 菚Failed! Convert 0xc796, 菛to [Æ] Convert 0xc797, 菞Failed! Convert 0xc798, 菢to [Ç] Convert 0xc799, 菣Failed! Convert 0xc79a, 菤to [È] Convert 0xc79b, 菦Failed! Convert 0xc79c, 菧to [É] Convert 0xc79d, 菨Failed! Convert 0xc79e, 菫Failed! Convert 0xc79f, 菬Failed! Convert 0xc7a0, 菭Failed!Convert 0xc7a2, 洽Failed! Convert 0xc7a3, 牵Failed! Convert 0xc7a4, 扦Failed! Convert 0xc7a5, 钎Failed! Convert 0xc7a6, 铅Failed! Convert 0xc7a7, 千Failed! Convert 0xc7a8, 迁Failed! Convert 0xc7a9, 签Failed! Convert 0xc7aa, 仟Failed! Convert 0xc7ab, 谦Failed! Convert 0xc7ac, 乾Failed! Convert 0xc7ad, 黔Failed! Convert 0xc7ae, 钱Failed! Convert 0xc7af, 钳Failed! Convert 0xc7b0, 前Failed! Convert 0xc7b1, 潜Failed! Convert 0xc7b2, 遣Failed! Convert 0xc7b3, 浅Failed! Convert 0xc7b4, 谴Failed! Convert 0xc7b5, 堑Failed! Convert 0xc7b6, 嵌Failed! Convert 0xc7b7, 欠Failed! Convert 0xc7b8, 歉Failed! Convert 0xc7b9, 枪Failed! Convert 0xc7ba, 呛Failed! Convert 0xc7bb, 腔Failed! Convert 0xc7bc, 羌Failed! Convert 0xc7bd, 墙Failed! Convert 0xc7be, 蔷Failed! Convert 0xc7bf, 强Failed! Convert 0xc880, 葊Failed! Convert 0xc881, 葋Failed! Convert 0xc882, 葌Failed! Convert 0xc883, 葍Failed! Convert 0xc884, 葎Failed! Convert 0xc885, 葏Failed! Convert 0xc886, 葐Failed! Convert 0xc887, 葒Failed! Convert 0xc888, 葓Failed! Convert 0xc889, 葔Failed! Convert 0xc88a, 葕Failed! Convert 0xc88b, 葖Failed! Convert 0xc88c, 葘Failed!Convert 0xc88e, 葞Failed! Convert 0xc88f, 葟Failed! Convert 0xc890, 葠Failed! Convert 0xc891, 葢Failed! Convert 0xc892, 葤Failed! Convert 0xc893, 葥Failed! Convert 0xc894, 葦Failed! Convert 0xc895, 葧Failed! Convert 0xc896, 葨Failed! Convert 0xc897, 葪Failed! Convert 0xc898, 葮Failed! Convert 0xc899, 葯Failed! Convert 0xc89a, 葰Failed! Convert 0xc89b, 葲Failed! Convert 0xc89c, 葴Failed! Convert 0xc89d, 葷Failed! Convert 0xc89e, 葹Failed! Convert 0xc89f, 葻Failed! Convert 0xc8a0, 葼Failed! Convert 0xc8a1, 取Failed! Convert 0xc8a2, 娶Failed! Convert 0xc8a3, 龋Failed! Convert 0xc8a4, 趣Failed! Convert 0xc8a5, 去Failed! Convert 0xc8a6, 圈Failed! Convert 0xc8a7, 颧Failed! Convert 0xc8a8, 权Failed! Convert 0xc8a9, 醛Failed! Convert 0xc8aa, 泉Failed! Convert 0xc8ab, 全Failed! Convert 0xc8ac, 痊Failed! Convert 0xc8ad, 拳Failed! Convert 0xc8ae, 犬Failed! Convert 0xc8af, 券Failed! Convert 0xc8b0, 劝Failed! Convert 0xc8b1, 缺Failed! Convert 0xc8b2, 炔Failed! Convert 0xc8b3, 瘸Failed! Convert 0xc8b4, 却Failed! Convert 0xc8b5, 鹊Failed! Convert 0xc8b6, 榷Failed! Convert 0xc8b7, 确Failed! Convert 0xc8b8, 雀Failed!Convert 0xc8ba, 群Failed! Convert 0xc8bb, 然Failed! Convert 0xc8bc, 燃Failed! Convert 0xc8bd, 冉Failed! Convert 0xc8be, 染Failed! Convert 0xc8bf, 瓤Failed! Convert 0xc980, 蓘Failed! Convert 0xc981, 蓙Failed! Convert 0xc982, 蓚Failed! Convert 0xc983, 蓛Failed! Convert 0xc984, 蓜Failed! Convert 0xc985, 蓞Failed! Convert 0xc986, 蓡Failed! Convert 0xc987, 蓢Failed! Convert 0xc988, 蓤Failed! Convert 0xc989, 蓧Failed! Convert 0xc98a, 蓨Failed! Convert 0xc98b, 蓩Failed! Convert 0xc98c, 蓪Failed! Convert 0xc98d, 蓫Failed! Convert 0xc98e, 蓭Failed! Convert 0xc98f, 蓮Failed! Convert 0xc990, 蓯Failed! Convert 0xc991, 蓱to [Ê] Convert 0xc992, 蓲Failed! Convert 0xc993, 蓳Failed! Convert 0xc994, 蓴Failed! Convert 0xc995, 蓵Failed! Convert 0xc996, 蓶Failed! Convert 0xc997, 蓷Failed! Convert 0xc998, 蓸Failed! Convert 0xc999, 蓹Failed! Convert 0xc99a, 蓺Failed! Convert 0xc99b, 蓻Failed! Convert 0xc99c, 蓽Failed! Convert 0xc99d, 蓾Failed! Convert 0xc99e, 蔀Failed! Convert 0xc99f, 蔁Failed! Convert 0xc9a0, 蔂Failed! Convert 0xc9a1, 伞to [Ë] Convert 0xc9a2, 散Failed! Convert 0xc9a3, 桑Failed! Convert 0xc9a4, 嗓Failed!Convert 0xc9a6, 搔Failed! Convert 0xc9a7, 骚Failed! Convert 0xc9a8, 扫Failed! Convert 0xc9a9, 嫂Failed! Convert 0xc9aa, 瑟Failed! Convert 0xc9ab, 色Failed! Convert 0xc9ac, 涩Failed! Convert 0xc9ad, 森Failed! Convert 0xc9ae, 僧Failed! Convert 0xc9af, 莎Failed! Convert 0xc9b0, 砂Failed! Convert 0xc9b1, 杀Failed! Convert 0xc9b2, 刹Failed! Convert 0xc9b3, 沙Failed! Convert 0xc9b4, 纱Failed! Convert 0xc9b5, 傻Failed! Convert 0xc9b6, 啥Failed! Convert 0xc9b7, 煞Failed! Convert 0xc9b8, 筛Failed! Convert 0xc9b9, 晒Failed! Convert 0xc9ba, 珊Failed! Convert 0xc9bb, 苫Failed! Convert 0xc9bc, 杉Failed! Convert 0xc9bd, 山Failed! Convert 0xc9be, 删Failed! Convert 0xc9bf, 煽Failed! Convert 0xca80, 蕗Failed! Convert 0xca81, 蕘Failed! Convert 0xca82, 蕚Failed! Convert 0xca83, 蕛Failed! Convert 0xca84, 蕜Failed! Convert 0xca85, 蕝Failed! Convert 0xca86, 蕟Failed! Convert 0xca87, 蕠Failed! Convert 0xca88, 蕡Failed! Convert 0xca89, 蕢Failed! Convert 0xca8a, 蕣Failed! Convert 0xca8b, 蕥Failed! Convert 0xca8c, 蕦Failed! Convert 0xca8d, 蕧Failed! Convert 0xca8e, 蕩Failed! Convert 0xca8f, 蕪Failed! Convert 0xca90, 蕫Failed!Convert 0xca92, 蕭Failed! Convert 0xca93, 蕮Failed! Convert 0xca94, 蕯Failed! Convert 0xca95, 蕰Failed! Convert 0xca96, 蕱Failed! Convert 0xca97, 蕳Failed! Convert 0xca98, 蕵Failed! Convert 0xca99, 蕶Failed! Convert 0xca9a, 蕷Failed! Convert 0xca9b, 蕸Failed! Convert 0xca9c, 蕼Failed! Convert 0xca9d, 蕽Failed! Convert 0xca9e, 蕿Failed! Convert 0xca9f, 薀Failed! Convert 0xcaa0, 薁Failed! Convert 0xcaa1, 省Failed! Convert 0xcaa2, 盛Failed! Convert 0xcaa3, 剩Failed! Convert 0xcaa4, 胜Failed! Convert 0xcaa5, 圣Failed! Convert 0xcaa6, 师Failed! Convert 0xcaa7, 失Failed! Convert 0xcaa8, 狮Failed! Convert 0xcaa9, 施Failed! Convert 0xcaaa, 湿Failed! Convert 0xcaab, 诗Failed! Convert 0xcaac, 尸Failed! Convert 0xcaad, 虱Failed! Convert 0xcaae, 十Failed! Convert 0xcaaf, 石Failed! Convert 0xcab0, 拾Failed! Convert 0xcab1, 时Failed! Convert 0xcab2, 什Failed! Convert 0xcab3, 食Failed! Convert 0xcab4, 蚀Failed! Convert 0xcab5, 实Failed! Convert 0xcab6, 识Failed! Convert 0xcab7, 史Failed! Convert 0xcab8, 矢Failed! Convert 0xcab9, 使Failed! Convert 0xcaba, 屎Failed! Convert 0xcabb, 驶Failed! Convert 0xcabc, 始Failed!Convert 0xcabe, 示Failed! Convert 0xcabf, 士Failed! Convert 0xcb80, 藔Failed! Convert 0xcb81, 藖Failed! Convert 0xcb82, 藗Failed! Convert 0xcb83, 藘Failed! Convert 0xcb84, 藙Failed! Convert 0xcb85, 藚Failed! Convert 0xcb86, 藛Failed! Convert 0xcb87, 藝to [Ì] Convert 0xcb88, 藞Failed! Convert 0xcb89, 藟to [Í] Convert 0xcb8a, 藠to [ˊ] Convert 0xcb8b, 藡to [ˋ] Convert 0xcb8c, 藢Failed! Convert 0xcb8d, 藣Failed! Convert 0xcb8e, 藥Failed! Convert 0xcb8f, 藦Failed! Convert 0xcb90, 藧Failed! Convert 0xcb91, 藨Failed! Convert 0xcb92, 藪Failed! Convert 0xcb93, 藫Failed! Convert 0xcb94, 藬Failed! Convert 0xcb95, 藭Failed! Convert 0xcb96, 藮Failed! Convert 0xcb97, 藯Failed! Convert 0xcb98, 藰Failed! Convert 0xcb99, 藱to [ˌ] Convert 0xcb9a, 藲Failed! Convert 0xcb9b, 藳Failed! Convert 0xcb9c, 藴Failed! Convert 0xcb9d, 藵Failed! Convert 0xcb9e, 藶Failed! Convert 0xcb9f, 藷Failed! Convert 0xcba0, 藸Failed! Convert 0xcba1, 恕Failed! Convert 0xcba2, 刷Failed! Convert 0xcba3, 耍Failed! Convert 0xcba4, 摔Failed! Convert 0xcba5, 衰Failed! Convert 0xcba6, 甩Failed! Convert 0xcba7, 帅Failed! Convert 0xcba8, 栓Failed!Convert 0xcbaa, 霜Failed! Convert 0xcbab, 双Failed! Convert 0xcbac, 爽Failed! Convert 0xcbad, 谁Failed! Convert 0xcbae, 水Failed! Convert 0xcbaf, 睡Failed! Convert 0xcbb0, 税Failed! Convert 0xcbb1, 吮Failed! Convert 0xcbb2, 瞬Failed! Convert 0xcbb3, 顺Failed! Convert 0xcbb4, 舜Failed! Convert 0xcbb5, 说Failed! Convert 0xcbb6, 硕Failed! Convert 0xcbb7, 朔Failed! Convert 0xcbb8, 烁Failed! Convert 0xcbb9, 斯Failed! Convert 0xcbba, 撕Failed! Convert 0xcbbb, 嘶Failed! Convert 0xcbbc, 思Failed! Convert 0xcbbd, 私Failed! Convert 0xcbbe, 司Failed! Convert 0xcbbf, 丝Failed! Convert 0xcc80, 虁Failed! Convert 0xcc81, 虂Failed! Convert 0xcc82, 虃Failed! Convert 0xcc83, 虄Failed! Convert 0xcc84, 虅Failed! Convert 0xcc85, 虆Failed! Convert 0xcc86, 虇Failed! Convert 0xcc87, 虈Failed! Convert 0xcc88, 虉Failed! Convert 0xcc89, 虊Failed! Convert 0xcc8a, 虋Failed! Convert 0xcc8b, 虌Failed! Convert 0xcc8c, 虒Failed! Convert 0xcc8d, 虓Failed! Convert 0xcc8e, 處Failed! Convert 0xcc8f, 虖Failed! Convert 0xcc90, 虗Failed! Convert 0xcc91, 虘Failed! Convert 0xcc92, 虙Failed! Convert 0xcc93, 虛Failed! Convert 0xcc94, 虜Failed!Convert 0xcc96, 號Failed! Convert 0xcc97, 虠Failed! Convert 0xcc98, 虡Failed! Convert 0xcc99, 虣Failed! Convert 0xcc9a, 虤Failed! Convert 0xcc9b, 虥Failed! Convert 0xcc9c, 虦Failed! Convert 0xcc9d, 虧Failed! Convert 0xcc9e, 虨Failed! Convert 0xcc9f, 虩Failed! Convert 0xcca0, 虪Failed! Convert 0xcca1, 獭Failed! Convert 0xcca2, 挞Failed! Convert 0xcca3, 蹋Failed! Convert 0xcca4, 踏Failed! Convert 0xcca5, 胎Failed! Convert 0xcca6, 苔Failed! Convert 0xcca7, 抬Failed! Convert 0xcca8, 台Failed! Convert 0xcca9, 泰Failed! Convert 0xccaa, 酞Failed! Convert 0xccab, 太Failed! Convert 0xccac, 态Failed! Convert 0xccad, 汰Failed! Convert 0xccae, 坍Failed! Convert 0xccaf, 摊Failed! Convert 0xccb0, 贪Failed! Convert 0xccb1, 瘫Failed! Convert 0xccb2, 滩Failed! Convert 0xccb3, 坛Failed! Convert 0xccb4, 檀Failed! Convert 0xccb5, 痰Failed! Convert 0xccb6, 潭Failed! Convert 0xccb7, 谭Failed! Convert 0xccb8, 谈Failed! Convert 0xccb9, 坦Failed! Convert 0xccba, 毯Failed! Convert 0xccbb, 袒Failed! Convert 0xccbc, 碳Failed! Convert 0xccbd, 探Failed! Convert 0xccbe, 叹Failed! Convert 0xccbf, 炭Failed! Convert 0xcd80, 蛝Failed!Convert 0xcd82, 蛡Failed! Convert 0xcd83, 蛢Failed! Convert 0xcd84, 蛣Failed! Convert 0xcd85, 蛥Failed! Convert 0xcd86, 蛦Failed! Convert 0xcd87, 蛧Failed! Convert 0xcd88, 蛨Failed! Convert 0xcd89, 蛪Failed! Convert 0xcd8a, 蛫Failed! Convert 0xcd8b, 蛬Failed! Convert 0xcd8c, 蛯Failed! Convert 0xcd8d, 蛵Failed! Convert 0xcd8e, 蛶Failed! Convert 0xcd8f, 蛷Failed! Convert 0xcd90, 蛺Failed! Convert 0xcd91, 蛻Failed! Convert 0xcd92, 蛼Failed! Convert 0xcd93, 蛽Failed! Convert 0xcd94, 蛿Failed! Convert 0xcd95, 蜁Failed! Convert 0xcd96, 蜄Failed! Convert 0xcd97, 蜅Failed! Convert 0xcd98, 蜆Failed! Convert 0xcd99, 蜋Failed! Convert 0xcd9a, 蜌Failed! Convert 0xcd9b, 蜎Failed! Convert 0xcd9c, 蜏Failed! Convert 0xcd9d, 蜐Failed! Convert 0xcd9e, 蜑Failed! Convert 0xcd9f, 蜔Failed! Convert 0xcda0, 蜖Failed! Convert 0xcda1, 汀Failed! Convert 0xcda2, 廷Failed! Convert 0xcda3, 停Failed! Convert 0xcda4, 亭Failed! Convert 0xcda5, 庭Failed! Convert 0xcda6, 挺Failed! Convert 0xcda7, 艇Failed! Convert 0xcda8, 通Failed! Convert 0xcda9, 桐Failed! Convert 0xcdaa, 酮Failed! Convert 0xcdab, 瞳Failed! Convert 0xcdac, 同Failed!Convert 0xcdae, 彤Failed! Convert 0xcdaf, 童Failed! Convert 0xcdb0, 桶Failed! Convert 0xcdb1, 捅Failed! Convert 0xcdb2, 筒Failed! Convert 0xcdb3, 统Failed! Convert 0xcdb4, 痛Failed! Convert 0xcdb5, 偷Failed! Convert 0xcdb6, 投Failed! Convert 0xcdb7, 头Failed! Convert 0xcdb8, 透Failed! Convert 0xcdb9, 凸Failed! Convert 0xcdba, 秃Failed! Convert 0xcdbb, 突Failed! Convert 0xcdbc, 图Failed! Convert 0xcdbd, 徒Failed! Convert 0xcdbe, 途Failed! Convert 0xcdbf, 涂Failed! Convert 0xce80, 蝷Failed! Convert 0xce81, 蝸Failed! Convert 0xce82, 蝹Failed! Convert 0xce83, 蝺Failed! Convert 0xce84, 蝿Failed! Convert 0xce85, 螀Failed! Convert 0xce86, 螁Failed! Convert 0xce87, 螄Failed! Convert 0xce88, 螆Failed! Convert 0xce89, 螇Failed! Convert 0xce8a, 螉Failed! Convert 0xce8b, 螊Failed! Convert 0xce8c, 螌Failed! Convert 0xce8d, 螎Failed! Convert 0xce8e, 螏Failed! Convert 0xce8f, 螐Failed! Convert 0xce90, 螑Failed! Convert 0xce91, 螒to [Α] Convert 0xce92, 螔to [Β] Convert 0xce93, 螕to [Γ] Convert 0xce94, 螖to [Γ] Convert 0xce95, 螘to [Δ] Convert 0xce96, 螙to [Ε] Convert 0xce97, 螚to [Ζ] Convert 0xce98, 螛to [Θ]Convert 0xce9a, 螝to [Κ] Convert 0xce9b, 螞to [Λ] Convert 0xce9c, 螠to [Μ] Convert 0xce9d, 螡to [Ν] Convert 0xce9e, 螢to [Ξ] Convert 0xce9f, 螣to [Ο] Convert 0xcea0, 螤to [Π] Convert 0xcea1, 巍to [Ρ] Convert 0xcea2, 微Failed! Convert 0xcea3, 危to [] Convert 0xcea4, 韦to [Σ] Convert 0xcea5, 违to [Τ] Convert 0xcea6, 桅to [Φ] Convert 0xcea7, 围to [Υ] Convert 0xcea8, 唯to [Φ] Convert 0xcea9, 惟to [Χ] Convert 0xceaa, 为Failed! Convert 0xceab, 潍Failed! Convert 0xceac, 维Failed! Convert 0xcead, 苇Failed! Convert 0xceae, 萎Failed! Convert 0xceaf, 委Failed! Convert 0xceb0, 伟Failed! Convert 0xceb1, 伪to [α] Convert 0xceb2, 尾to [β] Convert 0xceb3, 纬to [γ] Convert 0xceb4, 未to [δ] Convert 0xceb5, 蔚to [ε] Convert 0xceb6, 味to [δ] Convert 0xceb7, 畏to [ε] Convert 0xceb8, 胃to [ζ] Convert 0xceb9, 喂to [η] Convert 0xceba, 魏to [θ] Convert 0xcebb, 位to [ι] Convert 0xcebc, 渭to [κ] Convert 0xcebd, 谓to [λ] Convert 0xcebe, 尉to [μ] Convert 0xcebf, 慰to [ν] Convert 0xcf80, 蟺to [π] Convert 0xcf81, 蟻to [ξ] Convert 0xcf82, 蟼Failed! Convert 0xcf83, 蟽to [ζ] Convert 0xcf84, 蟿to [η]Convert 0xcf86, 蠁to [θ] Convert 0xcf87, 蠂to [χ] Convert 0xcf88, 蠄to [ψ] Convert 0xcf89, 蠅to [ω] Convert 0xcf8a, 蠆Failed! Convert 0xcf8b, 蠇Failed! Convert 0xcf8c, 蠈Failed! Convert 0xcf8d, 蠉Failed! Convert 0xcf8e, 蠋Failed! Convert 0xcf8f, 蠌Failed! Convert 0xcf90, 蠍Failed! Convert 0xcf91, 蠎Failed! Convert 0xcf92, 蠏Failed! Convert 0xcf93, 蠐Failed! Convert 0xcf94, 蠑Failed! Convert 0xcf95, 蠒Failed! Convert 0xcf96, 蠔Failed! Convert 0xcf97, 蠗Failed! Convert 0xcf98, 蠘Failed! Convert 0xcf99, 蠙Failed! Convert 0xcf9a, 蠚Failed! Convert 0xcf9b, 蠜Failed! Convert 0xcf9c, 蠝Failed! Convert 0xcf9d, 蠞Failed! Convert 0xcf9e, 蠟Failed! Convert 0xcf9f, 蠠Failed! Convert 0xcfa0, 蠣Failed! Convert 0xcfa1, 稀Failed! Convert 0xcfa2, 息Failed! Convert 0xcfa3, 希Failed! Convert 0xcfa4, 悉Failed! Convert 0xcfa5, 膝Failed! Convert 0xcfa6, 夕Failed! Convert 0xcfa7, 惜Failed! Convert 0xcfa8, 熄Failed! Convert 0xcfa9, 烯Failed! Convert 0xcfaa, 溪Failed! Convert 0xcfab, 汐Failed! Convert 0xcfac, 犀Failed! Convert 0xcfad, 檄Failed! Convert 0xcfae, 袭Failed! Convert 0xcfaf, 席Failed! Convert 0xcfb0, 习Failed!Convert 0xcfb2, 喜Failed! Convert 0xcfb3, 铣Failed! Convert 0xcfb4, 洗Failed! Convert 0xcfb5, 系Failed! Convert 0xcfb6, 隙Failed! Convert 0xcfb7, 戏Failed! Convert 0xcfb8, 细Failed! Convert 0xcfb9, 瞎Failed! Convert 0xcfba, 虾Failed! Convert 0xcfbb, 匣Failed! Convert 0xcfbc, 霞Failed! Convert 0xcfbd, 辖Failed! Convert 0xcfbe, 暇Failed! Convert 0xcfbf, 峡Failed! Convert 0xd080, 衻Failed! Convert 0xd081, 衼to [Ё] Convert 0xd082, 袀Failed! Convert 0xd083, 袃Failed! Convert 0xd084, 袆Failed! Convert 0xd085, 袇Failed! Convert 0xd086, 袉Failed! Convert 0xd087, 袊Failed! Convert 0xd088, 袌Failed! Convert 0xd089, 袎Failed! Convert 0xd08a, 袏Failed! Convert 0xd08b, 袐Failed! Convert 0xd08c, 袑Failed! Convert 0xd08d, 袓Failed! Convert 0xd08e, 袔Failed! Convert 0xd08f, 袕Failed! Convert 0xd090, 袗to [А] Convert 0xd091, 袘to [Б] Convert 0xd092, 袙to [В] Convert 0xd093, 袚to [Г] Convert 0xd094, 袛to [Д] Convert 0xd095, 袝to [Е] Convert 0xd096, 袞to [Ж] Convert 0xd097, 袟to [З] Convert 0xd098, 袠to [И] Convert 0xd099, 袡to [Й] Convert 0xd09a, 袣to [К] Convert 0xd09b, 袥to [Л] Convert 0xd09c, 袦to [М]Convert 0xd09e, 袨to [О] Convert 0xd09f, 袩to [П] Convert 0xd0a0, 袪to [Р] Convert 0xd0a1, 小to [С] Convert 0xd0a2, 孝to [Т] Convert 0xd0a3, 校to [У] Convert 0xd0a4, 肖to [Ф] Convert 0xd0a5, 啸to [Х] Convert 0xd0a6, 笑to [Ц] Convert 0xd0a7, 效to [Ч] Convert 0xd0a8, 楔to [Ш] Convert 0xd0a9, 些to [Щ] Convert 0xd0aa, 歇to [Ъ] Convert 0xd0ab, 蝎to [Ы] Convert 0xd0ac, 鞋to [Ь] Convert 0xd0ad, 协to [Э] Convert 0xd0ae, 挟to [Ю] Convert 0xd0af, 携to [Я] Convert 0xd0b0, 邪to [а] Convert 0xd0b1, 斜to [б] Convert 0xd0b2, 胁to [в] Convert 0xd0b3, 谐to [г] Convert 0xd0b4, 写to [д] Convert 0xd0b5, 械to [е] Convert 0xd0b6, 卸to [ж] Convert 0xd0b7, 蟹to [з] Convert 0xd0b8, 懈to [и] Convert 0xd0b9, 泄to [й] Convert 0xd0ba, 泻to [к] Convert 0xd0bb, 谢to [л] Convert 0xd0bc, 屑to [м] Convert 0xd0bd, 薪to [н] Convert 0xd0be, 芯to [о] Convert 0xd0bf, 锌to [п] Convert 0xd180, 褉to [р] Convert 0xd181, 褋to [с] Convert 0xd182, 褌to [т] Convert 0xd183, 褍to [у] Convert 0xd184, 褎to [ф] Convert 0xd185, 褏to [х] Convert 0xd186, 褑to [ц] Convert 0xd187, 褔to [ч] Convert 0xd188, 褕to [ш]Convert 0xd18a, 褗to [ъ] Convert 0xd18b, 褘to [ы] Convert 0xd18c, 褜to [ь] Convert 0xd18d, 褝to [э] Convert 0xd18e, 褞to [ю] Convert 0xd18f, 褟to [я] Convert 0xd190, 褠Failed! Convert 0xd191, 褢to [ѐ] Convert 0xd192, 褣Failed! Convert 0xd193, 褤Failed! Convert 0xd194, 褦Failed! Convert 0xd195, 褧Failed! Convert 0xd196, 褨Failed! Convert 0xd197, 褩Failed! Convert 0xd198, 褬Failed! Convert 0xd199, 褭Failed! Convert 0xd19a, 褮Failed! Convert 0xd19b, 褯Failed! Convert 0xd19c, 褱Failed! Convert 0xd19d, 褲Failed! Convert 0xd19e, 褳Failed! Convert 0xd19f, 褵Failed! Convert 0xd1a0, 褷Failed! Convert 0xd1a1, 选Failed! Convert 0xd1a2, 癣Failed! Convert 0xd1a3, 眩Failed! Convert 0xd1a4, 绚Failed! Convert 0xd1a5, 靴Failed! Convert 0xd1a6, 薛Failed! Convert 0xd1a7, 学Failed! Convert 0xd1a8, 穴Failed! Convert 0xd1a9, 雪Failed! Convert 0xd1aa, 血Failed! Convert 0xd1ab, 勋Failed! Convert 0xd1ac, 熏Failed! Convert 0xd1ad, 循Failed! Convert 0xd1ae, 旬Failed! Convert 0xd1af, 询Failed! Convert 0xd1b0, 寻Failed! Convert 0xd1b1, 驯Failed! Convert 0xd1b2, 巡Failed! Convert 0xd1b3, 殉Failed! Convert 0xd1b4, 汛Failed!。
中文转换字符集的方式
中文转换字符集的方式
在计算机领域中,中文字符集的转换是一个重要的技术。
随着
全球化的发展,不同国家和地区使用不同的字符集来表示他们的语
言和文字。
为了在不同的系统和平台上正确显示和处理中文字符,
需要进行字符集的转换。
常见的中文字符集包括GBK、UTF-8、UTF-16等。
在进行字符集
转换时,需要考虑字符编码、字符集间的对应关系以及字符集转换
的算法等因素。
通过合适的转换工具和技术,可以实现不同字符集
之间的相互转换,确保中文字符在不同系统和平台上的正确显示和
处理。
在实际应用中,中文字符集的转换涉及到多方面的技术和知识,需要综合考虑字符编码、文本处理、系统兼容性等因素。
只有深入
理解字符集转换的原理和方法,才能有效地处理中文字符集转换的
相关问题,确保中文信息在不同环境中的正常传递和处理。
总之,中文字符集的转换是一个复杂而重要的技术,对于计算
机领域和信息技术而言具有重要意义。
通过不断的学习和实践,我
们可以更好地掌握中文字符集转换的技术,为中文信息的传递和处理提供更加可靠和高效的支持。
UTF8GBK之间的转换
string GBKToUTF8(const std::string& strGBK) { string strOutUTF8 = ""; WCHAR * str1; int n = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL, 0); str1 = new WCHAR[n]; MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, str1, n); n = WideCharToMultiByte(CP_UTF8, 0, str1, -1, NULL, 0, NULL, NULL); char * str2 = new char[n]; WideCharToMultiByte(CP_UTF8, 0, str1, -1, str2, n, NULL, NULL); strOutUTF8 = str2; delete[]str1; str1 = NULL; delete[]str2; str2 = NULL; return strOutUTF8; }
len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL); char *szGBK = new char[len + 1]; memset(szGBK, 0, len + 1); WideCharToMultiByte(CP_ACP,0, wszGBK, -1, szGBK, len, NULL, NULL); //strUTF8 = szGBK; std::string strTemp(szGBK); delete[]szGBK; delete[]wszGBK; return strTemp; }
码题集字符串转换
码题集字符串转换码题集是一个常用的字符串处理库,它提供了许多字符串转换的功能。
在码题集中,字符串转换通常涉及到将字符串转换为其他类型的字符串,或者将不同编码的字符串进行转换。
本文将介绍码题集中常见的字符串转换方法,并给出一些示例代码。
一、编码转换编码转换是将不同编码的字符串进行转换的过程。
在码题集中,常见的编码转换包括UTF-8与GBK、UTF-8与ASCII等。
可以通过使用码题集中的相关函数进行编码转换。
示例代码:```c++#include<ctest/ctest.h>#include<ctest/utils.h>#include<string>#include<iostream>TEST(EncodingConversion){std::stringstr1="你好";//UTF-8编码std::stringstr2="你好";//GBK编码ctest::to_utf8(str2);//将GBK编码转换为UTF-8编码std::cout<<str1<<std::endl;//输出原始UTF-8编码的字符串std::cout<<str2<<std::endl;//输出转换后的UTF-8编码的字符串}```二、大小写转换大小写转换是将字符串中的字母大小写进行转换的过程。
在码题集中,可以使用码题集中的相关函数将字符串转换为大写或小写形式。
示例代码:```c++#include<ctest/ctest.h>#include<ctest/utils.h>#include<string>#include<iostream>TEST(CaseConversion){std::stringstr="Hello,World!";//原始字符串std::stringupper=ctest::to_upper(str);//将字符串转换为大写形式std::stringlower=ctest::to_lower(str);//将字符串转换为小写形式std::cout<<upper<<std::endl;//输出大写形式的字符串std::cout<<lower<<std::endl;//输出小写形式的字符串}```三、分割和连接字符串分割和连接字符串是将字符串按照指定的分隔符进行分割或将多个字符串连接成一个新的字符串的过程。
【miscellaneous】【CC++语言】UTF8与GBK字符编码之间的相互转换
【miscellaneous】【CC++语⾔】UTF8与GBK字符编码之间的相互转换⼀预备知识1,字符:字符是抽象的最⼩⽂本单位。
它没有固定的形状(可能是⼀个字形),⽽且没有值。
“A”是⼀个字符,“€”(德国、法国和许多其他欧洲国家通⽤货币的标志)也是⼀个字符。
“中”“国”这是两个汉字字符。
字符仅仅代表⼀个符号,没有任何实际值的意义。
2,字符集:字符集是字符的集合。
例如,汉字字符是中国⼈最先发明的字符,在中⽂、⽇⽂、韩⽂和越南⽂的书写中使⽤。
这也说明了字符和字符集之间的关系,字符组成字符集(iso8859-1,GB2312/GBK,unicode)。
3,代码点:字符集中的每个字符都被分配到⼀个“代码点”。
每个代码点都有⼀个特定的唯⼀数值,称为标值。
该标量值通常⽤⼗六进制表⽰。
4,代码单元:在每种编码形式中,代码点被映射到⼀个或多个代码单元。
“代码单元”是各个编码⽅式中的单个单元。
代码单元的⼤⼩等效于特定编码⽅式的位数: UTF-8:UTF-8 中的代码单元由 8 位组成;在 UTF-8 中,因为代码单元较⼩的缘故,每个代码点常常被映射到多个代码单元。
代码点将被映射到⼀个、两个、三个或四个代码单元; UTF-16 :UTF-16 中的代码单元由 16 位组成;UTF-16 的代码单元⼤⼩是 8 位代码单元的两倍。
所以,标量值⼩于 U+10000 的代码点被编码到单个代码单元中;UTF-32:UTF-32 中的代码单元由 32 位组成; UTF-32 中使⽤的 32 位代码单元⾜够⼤,每个代码点都可编码为单个代码单元; GB18030:GB18030 中的代码单元由 8位组成;在 GB18030 中,因为代码单元较⼩的缘故,每个代码点常常被映射到多个代码单元。
代码点将被映射到⼀个、两个或四个代码单元。
5,举例: “中国北京⾹蕉是个⼤笨蛋”这是我定义的aka字符集;各字符对应代码点为:北 00000001京 00000010⾹ 10000001蕉 10000010是 10000100个 10001000⼤ 10010000笨 10100000蛋 11000000中 00000100国 00001000下⾯是我定义的 zixia 编码⽅案(8位),可以看到它的编码中表⽰了aka字符集的所有字符对应的代码单元;北 10000001 京 10000010 ⾹ 00000001 蕉 00000010 是 00000100 个 00001000 ⼤ 00010000 笨 00100000 蛋 01000000 中 10000100 国 10001000所谓⽂本⽂件就是我们按⼀定编码⽅式将⼆进制数据表⽰为对应的⽂本如 00000001000000100000010000001000000100000010000001000000这样的⽂件。
JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换
【适用范围】适用EOS所有版本,操作系统不限,数据库不限【问题描述和定位】JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换【解决方案和步骤】1、函数介绍在Java中,字符串用统一的Unicode编码,每个字符占用两个字节,与编码有关的两个主要函数为:1)将字符串用指定的编码集合解析成字节数组,完成Unicode-〉charsetName转换public byte[] getBytes(String charsetName) throws UnsupportedEncodingException2)将字节数组以指定的编码集合构造成字符串,完成charsetName-〉Unicode转换public String(byte[] bytes, String charsetName) throws UnsupportedEncodingException 2、Unicode与各编码之间的直接转换下面以对中文字符串"a中文"的编码转换为例,来了解各种编码之间的转换1)Unicode和GBK测试结果如下,每个汉字转换为两个字节,且是可逆的,即通过字节可以转换回字符串String-GBK〉ByteArray:\u0061\u4E2D\u6587(a中文)-〉0x61 0xD6 0xD0 0xCE 0xC4 ByteArray-GBK〉String:0x61 0xD6 0xD0 0xCE 0xC4-〉\u0061\u4E2D\u6587(a中文)2)Unicode和UTF-8测试结果如下,每个汉字转换为三个字节,且是可逆的,即通过字节可以转换回字符串String-UTF-8〉ByteArray:\u0061\u4E2D\u6587(a中文)-〉0x61 0xE4 0xB8 0xAD 0xE 6%0x96 0x87ByteArray-UTF-8〉String:0x61 0xE4 0xB8 0xAD 0xE6%0x96 0x87-〉\u0061\u4E2D\u6 587(a中文)3)Unicode和ISO-8859-1测试结果如下,当存在汉字时转换失败,非可逆,即通过字节不能再转换回字符串String-ISO-8859-1〉ByteArray:\u0061\u4E2D\u6587(a中文)-〉0x61 0x3F 0x3F ByteArray-ISO-8859-1〉String:0x61 0x3F 0x3F-〉\u0061\u003F\u003F(a??)3、Unicode与各编码之间的交叉转换在上面直接转换中,由字符串(Unicode)生成的字节数组,在构造回字符串时,使用的是正确的编码集合,如果使用的不是正确的编码集合会怎样呢?会正确构造吗?如果不能正确构造能有办法恢复吗?会信息丢失吗?下面我们就来看看这种情况,这部分可以说明在某些情况下虽然我们最终正确显示了结果,但其间仍然进行了不正确的转换。
汉字字符集编码
汉字字符集编码
汉字字符集编码是指将汉字转换为计算机可以使用的编码方案,常用的汉字字符集编码方案有GBK、GB2312、UTF-8等。
以下是一些常见的汉字字符集编码及其用途:
1. GBK:GBK编码是将GB2312字符集扩展到5位,用于存储大部分中文汉字。
GBK编码在Windows和MacOS操作系统中广泛使用,也被许多中文应用(如网页、电子书等)所支持。
2. GB2312:GB2312编码是一种基于UTF-8的字符集编码方案,用于存储中文字符。
与UTF-8相比,GB2312在某些情况下可能会出现编码错误,但比UTF-8更稳定。
3. UTF-8:UTF-8是一种无符号多字节编码方案,可以表示任意汉字。
UTF-8编码在中文字符的存储和传输方面都是最好的选择,但在一些情况下可能会出现编码错误。
4. ASCII: ASCII编码是一种单字节编码方案,用于存储只有字符和符号。
虽然ASCII编码可以表示所有的中文字符,但在传输和存储时可能会出现编码错误。
在实际应用中,选择合适的汉字字符集编码方案取决于具体需求和设备。
C#_汉字与GBK,Unicode,UTF-8编码之间的转换
C#_汉字与GBK,Unicode,UTF-8编码之间的转换IT发展⾄今,字符编码版本众多,⽬前流⾏的GBK,Unicode,UTF-8编码与汉字的转换可⽤如下代码: private void button1_Click(object sender, EventArgs e){//汉字转为Unicode编码:string hz = textBox1.Text.ToString();byte[] b=Encoding.Unicode.GetBytes(hz);string o = "";foreach(var x in b){o += string.Format("{0:X2}",x) + " ";}textBox2.Text = o;}private void button2_Click(object sender, EventArgs e){//Unicode编码转为汉字:string cd = textBox2.Text.ToString();string cd2 = cd.Replace(" ", "");cd2 = cd2.Replace("\r", "");cd2 = cd2.Replace("\n", "");cd2 = cd2.Replace("\r\n", "");cd2 = cd2.Replace("\t", "");if (cd2.Length % 4 != 0){MessageBox.Show("Unicode编码为双字节,请删多或补少!确保是⼆的倍数。
");}else{int len = cd2.Length / 2;byte[] b = new byte[len];for (int i = 0; i < cd2.Length;i+=2 ){string bi = cd2.Substring(i, 2);b[i/2] =(byte) Convert.ToInt32(bi, 16);}string o=Encoding.Unicode.GetString(b);textBox1.Text = o;}}private void button5_Click(object sender, EventArgs e){//汉字转成GBK⼗六进制码:string hz = textBox3.Text.ToString();byte[] gbk = Encoding.GetEncoding("GBK").GetBytes(hz);string s1 = ""; string s1d = "";foreach(byte b in gbk){//s1 += Convert.ToString(b, 16)+" ";s1 += string.Format("{0:X2}", b) + " ";s1d += b + " ";toolTip1.SetToolTip(textBox4, s1d);}textBox4.Text = s1;toolTip1.SetToolTip(textBox4, s1d);//汉字转成Unicode⼗六进制码:byte[] uc = Encoding.Unicode.GetBytes(hz);string s2 = ""; string s2d = "";foreach (byte b in uc){//s2 += Convert.ToString(b, 16) + " ";s2 += string.Format("{0:X2}", b) + " ";s2d += b + " ";toolTip1.SetToolTip(textBox5, s2d);}textBox5.Text = s2;toolTip1.SetToolTip(textBox5, s2d);//汉字转成UTF-8⼗六进制码:byte[] utf8 = Encoding.UTF8.GetBytes(hz);string s3 = ""; string s3d = "";foreach (byte b in utf8){//s3 += Convert.ToString(b, 16) + " ";s3 += string.Format("{0:X2}", b) + " ";s3d += b + " ";toolTip1.SetToolTip(textBox6, s3d);}textBox6.Text = s3;toolTip1.SetToolTip(textBox6, s3d);}private void button6_Click(object sender, EventArgs e){ //GBK⼗六进制码转成汉字:string cd = textBox4.Text.ToString();string[] b4 = cd.Split(' ');byte[] bs=new byte[2];bs[0] = (byte)Convert.ToByte(b4[0], 16);bs[1] = (byte)Convert.ToByte(b4[1], 16);textBox3.Text =Encoding.GetEncoding("GBK").GetString(bs);}private void button7_Click(object sender, EventArgs e){ //Unicode⼗六进制码转成汉字:string cd = textBox5.Text.ToString();string[] b5 = cd.Split(' ');byte[] bs = new byte[2];bs[0] = (byte)Convert.ToByte(b5[0], 16);bs[1] = (byte)Convert.ToByte(b5[1], 16);textBox3.Text = Encoding.GetEncoding("Unicode").GetString(bs); }private void button8_Click(object sender, EventArgs e){ //UTF-8⼗六进制码转成汉字:string cd = textBox6.Text.ToString();string[] b6 = cd.Split(' ');byte[] bs = new byte[3];bs[0] = (byte)Convert.ToByte(b6[0], 16);bs[1] = (byte)Convert.ToByte(b6[1], 16);bs[2] = (byte)Convert.ToByte(b6[2], 16);textBox3.Text = Encoding.GetEncoding("UTF-8").GetString(bs); }url:。
UTF-8与GBK互转乱码的原因
UTF-8与GBK互转乱码的原因public class CodecTest {public static void main(String[] args) throws UnsupportedEncodingException {String s = "我是中国⼈";//GBK编码后的字节//gbkEncode[-50, -46, -54, -57, -42, -48, -71, -6, -56, -53]byte[] gbkEncode = s.getBytes("GBK");System.out.println("gbkEncode" + Arrays.toString(gbkEncode));//utf-8编码后的字节//utfEncode[-26, -120, -111, -26, -104, -81, -28, -72, -83, -27, -101, -67, -28, -70, -70]byte[] utfEncode = s.getBytes("utf-8");System.out.println("utfEncode" + Arrays.toString(utfEncode));//⽤utf-8解码gbk编码后的字节,形成的字符串:�����й���String gbkDecodedByUTF = new String(gbkEncode,"utf-8");System.out.println(gbkDecodedByUTF);// 对上⼀步的字符串�����й���⽤utf-8编码后的字节//[-17, -65, -67, -17, -65, -67, -17, -65, -67, -17, -65, -67, -17, -65, -67, -48, -71, -17, -65, -67, -17, -65, -67, -17, -65, -67]byte[] gbkDecodedByUTF_EncodeByUTF = gbkDecodedByUTF.getBytes("utf-8");System.out.println(Arrays.toString(gbkDecodedByUTF_EncodeByUTF));//不出意外,这⾥解码应该是�����й���//所以,问题的源头出在我们⽤ utf-8 gbk编码的字节上,形成了错误的字符。
Python实现把utf-8格式的文件转换成gbk格式的文件
Python实现把utf-8格式的⽂件转换成gbk格式的⽂件需求:将utf-8格式的⽂件转换成gbk格式的⽂件实现代码如下:复制代码代码如下:def ReadFile(filePath,encoding="utf-8"):with codecs.open(filePath,"r",encoding) as f:return f.read()def WriteFile(filePath,u,encoding="gbk"):with codecs.open(filePath,"w",encoding) as f:f.write(u)def UTF8_2_GBK(src,dst):content = ReadFile(src,encoding="utf-8")WriteFile(dst,content,encoding="gbk")代码讲解:函数ReadFile的第⼆个参数指定以utf-8格式的编码⽅式读取⽂件,返回的结果content为Unicode然后,在将Unicode以gbk格式写⼊⽂件中。
这样就能实现需求。
但是,如果要转换格式的⽂件中包含有⼀些字符并不包含在gbk字符集中的话,就会报错,类似如下:复制代码代码如下:UnicodeEncodeError: 'gbk' codec can't encode character u' a0' in position 4813: illegal multibyte sequence以上的报错信息的意思是:在将Unicode编码成gbk的时候,不能将Unicode u' a0'编码成gbk。
这⾥,我们需要弄清楚gb2312、gbk和gb18030三者之间的关系复制代码代码如下:GB2312:6763个汉字GBK:21003个汉字GB18030-2000:27533个汉字GB18030-2005:70244个汉字所以,GBK是GB2312的超集,GB18030是GBK的超集。
字符串转码UTF8转码为GBK的C语言程序源代码
字符串转码UTF8转码为GBK的C语⾔程序源代码GBK和UTF8之间的转换可以使⽤两个API,⽅法是先把它们转换为中间编码Unicode,再转换为对应的编码即可。
#include <stdio.h>#include <windows.h>//GBK编码转换到UTF8编码int GBKToUTF8(unsigned char * lpGBKStr,unsigned char * lpUTF8Str,int nUTF8StrLen){wchar_t * lpUnicodeStr = NULL;int nRetLen = 0;if(!lpGBKStr) //如果GBK字符串为NULL则出错退出return 0;nRetLen = ::MultiByteToWideChar(CP_ACP,0,(char *)lpGBKStr,-1,NULL,NULL); //获取转换到Unicode编码后所需要的字符空间长度lpUnicodeStr = new WCHAR[nRetLen + 1]; //为Unicode字符串空间nRetLen = ::MultiByteToWideChar(CP_ACP,0,(char *)lpGBKStr,-1,lpUnicodeStr,nRetLen); //转换到Unicode编码if(!nRetLen) //转换失败则出错退出return 0;nRetLen = ::WideCharToMultiByte(CP_UTF8,0,lpUnicodeStr,-1,NULL,0,NULL,NULL); //获取转换到UTF8编码后所需要的字符空间长度if(!lpUTF8Str) //输出缓冲区为空则返回转换后需要的空间⼤⼩{if(lpUnicodeStr)delete []lpUnicodeStr;return nRetLen;}if(nUTF8StrLen < nRetLen) //如果输出缓冲区长度不够则退出{if(lpUnicodeStr)delete []lpUnicodeStr;return 0;}nRetLen = ::WideCharToMultiByte(CP_UTF8,0,lpUnicodeStr,-1,(char *)lpUTF8Str,nUTF8StrLen,NULL,NULL); //转换到UTF8编码return nRetLen;}// UTF8编码转换到GBK编码int UTF8ToGBK(unsigned char * lpUTF8Str,unsigned char * lpGBKStr,int nGBKStrLen){wchar_t * lpUnicodeStr = NULL;int nRetLen = 0;if(!lpUTF8Str) //如果UTF8字符串为NULL则出错退出return 0;nRetLen = ::MultiByteToWideChar(CP_UTF8,0,(char *)lpUTF8Str,-1,NULL,NULL); //获取转换到Unicode编码后所需要的字符空间长度lpUnicodeStr = new WCHAR[nRetLen + 1]; //为Unicode字符串空间nRetLen = ::MultiByteToWideChar(CP_UTF8,0,(char *)lpUTF8Str,-1,lpUnicodeStr,nRetLen); //转换到Unicode编码if(!nRetLen) //转换失败则出错退出return 0;nRetLen = ::WideCharToMultiByte(CP_ACP,0,lpUnicodeStr,-1,NULL,NULL,NULL,NULL); //获取转换到GBK编码后所需要的字符空间长度if(!lpGBKStr) //输出缓冲区为空则返回转换后需要的空间⼤⼩{if(lpUnicodeStr)delete []lpUnicodeStr;return nRetLen;}if(nGBKStrLen < nRetLen) //如果输出缓冲区长度不够则退出{if(lpUnicodeStr)delete []lpUnicodeStr;return 0;}nRetLen = ::WideCharToMultiByte(CP_ACP,0,lpUnicodeStr,-1,(char *)lpGBKStr,nRetLen,NULL,NULL); //转换到GBK编码return nRetLen;}//使⽤这两个函数的例⼦int main(){char cGBKStr[] = "我是中国⼈!";char * lpGBKStr = NULL;char * lpUTF8Str = NULL;FILE * fp = NULL;int nRetLen = 0;nRetLen = GBKToUTF8((unsigned char *)cGBKStr,NULL,NULL);printf("转换后的字符串需要的空间长度为:%d ",nRetLen);lpUTF8Str = new char[nRetLen + 1];nRetLen = GBKToUTF8((unsigned char *)cGBKStr,(unsigned char *)lpUTF8Str,nRetLen);if(nRetLen){printf("GBKToUTF8转换成功!");}else{printf("GBKToUTF8转换失败!");goto Ret0;}fp = fopen("C:\GBK转UTF8.txt","wb"); //保存到⽂本⽂件fwrite(lpUTF8Str,nRetLen,1,fp);fclose(fp);getchar(); //先去打开那个⽂本⽂件看看,单击记事本的“⽂件”-“另存为”菜单,在对话框中看到编码框变为了“UTF-8”说明转换成功了nRetLen = UTF8ToGBK((unsigned char *)lpUTF8Str,NULL,NULL); //再转回来printf("转换后的字符串需要的空间长度为:%d ",nRetLen);lpGBKStr = new char[nRetLen + 1];nRetLen = UTF8ToGBK((unsigned char *)lpUTF8Str,(unsigned char *)lpGBKStr,nRetLen);if(nRetLen){printf("UTF8ToGBK转换成功! ");}else{printf("UTF8ToGBK转换失败! ");goto Ret0;}fp = fopen("C:\UTF8转GBK.txt","wb"); //保存到⽂本⽂件fwrite(lpGBKStr,nRetLen,1,fp);fclose(fp);getchar(); //再去打开⽂本⽂件看看,发现编码框⼜变为了“ANSI”说明转换成功了Ret0:if(lpGBKStr)delete []lpGBKStr;if(lpUTF8Str)delete []lpUTF8Str;return 0;}。
Python字符编码转码之GBK,UTF8互转
Python字符编码转码之GBK,UTF8互转⼀、Python字符编码介绍1、须知:在python 2中默认编码是 ASCII,⽽在python 3中默认编码是 unicodeunicode 分为utf-32 (占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),所以utf-16 是最常⽤的unicode版本,但是在⽂件⾥存的还是utf-8,因为utf8省空间在python 3,encode编码的同时会把stringl变成bytes类型,decode解码的同时会把bytes类型变成string类型在unicode编码中 1个中⽂字符=2个字节,1个英⽂字符 = 1个字节,切记:ASCII是不能存中⽂字符的utf-8是可变长字符编码,它是unicode的优化,所有的英⽂字符依然按ASCII形式存储,所有的中⽂字符统⼀是3个字节unicode包含了所有国家的字符编码,不同字符编码之间的转换都需要经过unicode的过程python本⾝的默认编码是utf-82、py2中的编码和转码的过程,如图:注:因为unicode是中间编码,任何字符编码之前的转换都必须解码成unicode,在编码成需要转的字符编码⼆、字符编码的转换1、py2字符编码的转换,代码如下:#! /usr/bin/env python# -*- coding:utf-8 -*-# __auther__ == luoahongs = "我是学员"#utf-8解码成unicode编码s_to_unicode = s.decode("utf-8")print("--------s_to_unicode-----")print(s_to_unicode)#然后unicode再编码成gbks_to_gbk = s_to_unicode.encode("gbk")print("-----s_to_gbk------")print(s_to_gbk)#gbk解码成unicode再编码成utf-8gbk_to_utf8 = s_to_gbk.decode("gbk").encode("utf-8")print("------gbk_to_utf8-----")print(gbk_to_utf8)#输出--------s_to_unicode-----我是学员-----s_to_gbk------�����˧------gbk_to_utf8-----我是学员注:以上这种情况适合字符是⾮unicode编码请款下,但是如果字符编码已经是Unicode的了咋办呢?⼴告回来,更加精彩。
Oracle将字符编码从GBK转到UTF8,如何操作比较稳妥?
Oracle将字符编码从 GBK转到 UTF8,如何操作比较稳 妥?
有个学校oracle数据库的编码是GBK,而且库里边已经有很多生产数据了,现在想改成UTF8的,如果执行了这步操作,会出 现哪些问题?
因为utf8的库中文占3个byte,gbk占2个byte,所以会出现客户端乱码。 比较稳妥的方案是,再搭建一个oracle环境,设置成utf8编码,把旧的oracle数据迁移到新的utf8编码的oracle图的办法是错的,从不这样用,也不了解会有啥问题。
JAVA编码之 ASCII、Unicode、GBK和UTF-8字符编码的区别联系
/xiaohulunb/article/details/39588005开始计算机只在美国用。
八位的字节一共可以组合出256(2的8次方)种不同的状态。
他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。
遇上0×10, 终端就换行,遇上0×07, 终端就向人们嘟嘟叫,例好遇上0x1b, 打印机就打印反白的字,或者终端就用彩色显示字母。
他们看到这样很好,于是就把这些0×20以下的字节状态称为”控制码”。
他们又把所有的空格、标点符号、数字、大小写字母分别用连续的字节状态表示,一直编到了第127号,这样计算机就可以用不同字节来存储英语的文字了。
大家看到这样,都感觉很好,于是大家都把这个方案叫做ANSI 的”Ascii”编码(American Standard Code for Information Interchange,美国信息互换标准代码)。
当时世界上所有的计算机都用同样的ASCII方案来保存英文文字。
后来,就像建造巴比伦塔一样,世界各地的都开始使用计算机,但是很多国家用的不是英文,他们的字母里有许多是ASCII里没有的,为了可以在计算机保存他们的文字,他们决定采用127号之后的空位来表示这些新的字母、符号,还加入了很多画表格时需要用下到的横线、竖线、交叉等形状,一直把序号编到了最后一个状态255。
从128 到255这一页的字符集被称”扩展字符集“。
从此之后,贪婪的人类再没有新的状态可以用了,美帝国主义可能没有想到还有第三世界国家的人们也希望可以用到计算机吧!等中国人们得到计算机时,已经没有可以利用的字节状态来表示汉字,况且有6000多个常用汉字需要保存呢。
但是这难不倒智慧的中国人民,我们不客气地把那些127号之后的奇异符号们直接取消掉, 规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了。
批量转换文件字符编码(GBK转UTF-8)
批量转换⽂件字符编码(GBK转UTF-8)今天收到⼀份代码,拖到IDE中发现乱码,看来下编码是GBK的( )。
只能⼿写个⼩⼯具批量转换下。
代码在这⾥分享下,需要的可⾃取。
核⼼⽂件就两个:ConverterUtil.javapublic class ConverterUtil {private static String lineSepator;static {String osName = System.getProperty("");if (osName.contains("Windows")) {lineSepator = "\r\n";} else {lineSepator = "\n";}}public static Map<String, String> parseArgs(String[] args) {Map<String, String> argsMap = new HashMap<String, String>();for (int i = 0; i < args.length; i++) {String key = args[i];if (++i >= args.length) {argsMap.put(key, "");} else {argsMap.put(key, args[i]);}}return argsMap;}public static void writeString(File file, String content, String encoding) throws Exception {OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(file), encoding);osw.write(content);osw.close();}public static String readString(File file, String encoding) throws Exception {BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), encoding));StringBuilder buff = new StringBuilder();String line;while ((line = br.readLine()) != null) {if (buff.length() > 0) {buff.append(lineSepator);}buff.append(line);}br.close();return buff.toString();}public static List<File> listFiles(File dir, String ext, int maxDepth) {List<File> files = new ArrayList<File>();seekFiles(dir, ext, maxDepth, files);return files;}private static void seekFiles(File dir, String ext, int maxDepth, List<File> files) {if (maxDepth-- <= 0) {return;}files.addAll(Arrays.asList(dir.listFiles(f -> {return f.isFile() && "*".equals(ext) ? true : f.getName().toLowerCase().endsWith("." + ext);})));for (File _dir : dir.listFiles(f -> f.isDirectory())) {seekFiles(_dir, ext, maxDepth, files);}}}View CodeConverter.java/*** change file's encoding(gbk) to utf-8** @author lichmama**/public class Converter {private static String sourceDir;private static String fileExtension = "*";private static int maxDepth = Integer.MAX_VALUE;/*** java -jar gbk2utf.jar --src xxx --ext xxx --max-depth xxx** @param args*/public static void main(String[] args) {if (usage(args)) {logger("Usage: java -jar gbk2utf.jar [OPTIONS]");logger("Change file's encoding(gbk) to utf-8 (@lichmama)");logger("OPTIONS:");logger(" --src <source path>, essential");logger(" --ext <file extension>, optional");logger(" --max-depth <max depth>, optional");return;}logger("source: " + sourceDir);logger(" file: " + ("*".equals(fileExtension) ? "*" : "*." + fileExtension));logger("====================================");Converter converter = new Converter();converter.process(sourceDir, fileExtension, maxDepth);logger("====================================**DONE");}public void process(String src, String ext, int maxDepth) {File _src = new File(src);if (!_src.exists()) {logger("the path \"{0}\" not exist!", src);return;}if (_src.isDirectory()) {List<File> files = ConverterUtil.listFiles(_src, ext, maxDepth);if (files.size() == 0) {logger("NO FILES TO BE PROCESSED.");return;} else {logger("TOTAL FOUND {0} FILES, BEGIN TO PROCESS...\n", files.size()); }files.stream().forEach(f -> gbk2utf(f));} else {gbk2utf(_src);}}public boolean gbk2utf(File file) {try {String content = ConverterUtil.readString(file, "GBK");ConverterUtil.writeString(file, content, "UTF-8");} catch (Exception e) {logger("process {0} - FAILURE, reason: {1}", file.getName(), e.getMessage());return false;}logger("process {0} - SUCCESS", file.getName());return true;}private static boolean usage(String[] args) {Map<String, String> argsMap = ConverterUtil.parseArgs(args);if (argsMap.get("--src") != null && !"".equals(argsMap.get("--src"))) {sourceDir = argsMap.get("--src");} else {return true;}if (argsMap.get("--ext") != null) {if (!"".equals(argsMap.get("--ext"))) {fileExtension = argsMap.get("--ext").toLowerCase();} else {return true;}}if (argsMap.get("--max-depth") != null) {if (!"".equals(argsMap.get("--max-depth"))) {maxDepth = Integer.parseInt(argsMap.get("--max-depth"));} else {return true;}}return false;}private static void logger(String s) {System.out.println(s);}private static void logger(String pattern, Object...arguments) {logger(MessageFormat.format(pattern, arguments));}}View Code编译后打包成Runnable Jar File,$> java -jar gbk2utf.jarUsage: java -jar gbk2utf.jar [OPTIONS]Change file's encoding(gbk) to utf-8 (@lichmama)OPTIONS:--src <source path>, essential--ext <file extension>, optional--max-depth <max depth>, optional使⽤⽰例:1.转换code⽬录下java⽂件的编码java -jar gbk2utf.jar --src code/ --ext java2.转转code⽬录下xml⽂件的编码,最⼤遍历深度为3java -jar gbk2utf.jar --src code/ --ext xml --max-depth 33.转换test.html⽂件的编码java -jar gbk2utf.jar --src test.html温馨提⽰:使⽤前请先备份原始⽂件以免造成不必要的损失!!!另,本程序运⾏环境JDK1.8(及以上)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字符编码之间的相互转换UTF8与GBKC++ UTF8编码转换CChineseCode一预备知识1,字符:字符是抽象的最小文本单位。
它没有固定的形状(可能是一个字形),而且没有值。
“A”是一个字符,“€”(德国、法国和许多其他欧洲国家通用货币的标志)也是一个字符。
“中”“国”这是两个汉字字符。
字符仅仅代表一个符号,没有任何实际值的意义。
2,字符集:字符集是字符的集合。
例如,汉字字符是中国人最先发明的字符,在中文、日文、韩文和越南文的书写中使用。
这也说明了字符和字符集之间的关系,字符组成字符集(iso8859-1,GB2312/GBK,unicode)。
3,代码点:字符集中的每个字符都被分配到一个“代码点”。
每个代码点都有一个特定的唯一数值,称为标值。
该标量值通常用十六进制表示。
4,代码单元:在每种编码形式中,代码点被映射到一个或多个代码单元。
“代码单元”是各个编码方式中的单个单元。
代码单元的大小等效于特定编码方式的位数:UTF-8 :UTF-8 中的代码单元由8 位组成;在UTF-8 中,因为代码单元较小的缘故,每个代码点常常被映射到多个代码单元。
代码点将被映射到一个、两个、三个或四个代码单元;UTF-16 :UTF-16 中的代码单元由16 位组成;UTF-16 的代码单元大小是8 位代码单元的两倍。
所以,标量值小于U+10000 的代码点被编码到单个代码单元中;UTF-32:UTF-32 中的代码单元由32 位组成;UTF-32 中使用的32 位代码单元足够大,每个代码点都可编码为单个代码单元;GB18030:GB18030 中的代码单元由8 位组成;在GB18030 中,因为代码单元较小的缘故,每个代码点常常被映射到多个代码单元。
代码点将被映射到一个、两个或四个代码单元。
5,举例:“中国北京香蕉是个大笨蛋”这是我定义的aka字符集;各字符对应代码点为:北00000001京00000010香10000001蕉10000010是10000100个10001000大10010000笨10100000蛋11000000中00000100国00001000下面是我定义的zixia 编码方案(8位),可以看到它的编码中表示了aka字符集的所有字符对应的代码单元;北10000001 京10000010 香00000001 蕉00000010 是00000100 个00001000 大00010000 笨00100000 蛋01000000 中10000100 国10001000所谓文本文件就是我们按一定编码方式将二进制数据表示为对应的文本如00000001000000100000010000001000000100000010000001000000这样的文件。
我用一个支持zixia编码和aka字符集的记事本打开,它就按照编码方案显示为“香蕉是个大笨蛋” 如果我把这些字符按照GBK 另存一个文件,那么则肯定不是这个,而是1100111111100011 1011110110110110 1100101011000111 1011100011110110 1011010011110011 1011000110111111 1011010110110000 110100001010二,字符集1,常用字符集分类ASCII及其扩展字符集作用:表语英语及西欧语言。
位数:ASCII是用7位表示的,能表示128个字符;其扩展使用8位表示,表示256个字符。
范围:ASCII从00到7F,扩展从00到FF。
ISO-8859-1字符集作用:扩展ASCII,表示西欧、希腊语等。
位数:8位,范围:从00到FF,兼容ASCII字符集。
GB2312字符集作用:国家简体中文字符集,兼容ASCII。
位数:使用2个字节表示,能表示7445个符号,包括6763个汉字,几乎覆盖所有高频率汉字。
范围:高字节从A1到F7, 低字节从A1到FE。
将高字节和低字节分别加上0XA0即可得到编码。
BIG5字符集作用:统一繁体字编码。
位数:使用2个字节表示,表示13053个汉字。
范围:高字节从A1到F9,低字节从40到7E,A1到FE。
GBK字符集作用:它是GB2312的扩展,加入对繁体字的支持,兼容GB2312。
位数:使用2个字节表示,可表示21886个字符。
范围:高字节从81到FE,低字节从40到FE。
GB18030字符集作用:它解决了中文、日文、朝鲜语等的编码,兼容GBK。
位数:它采用变字节表示(1 ASCII,2,4字节)。
可表示27484个文字。
范围:1字节从00到7F; 2字节高字节从81到FE,低字节从40到7E 和80到FE;4字节第一三字节从81到FE,第二四字节从30到39。
UCS字符集作用:国际标准ISO 10646 定义了通用字符集(Universal Character Set)。
它是与UNICODE同类的组织,UCS-2和UNICODE 兼容。
位数:它有UCS-2和UCS-4两种格式,分别是2字节和4字节。
范围:目前,UCS-4只是在UCS-2前面加了0×0000。
UNICODE字符集作用:为世界650种语言进行统一编码,兼容ISO-8859-1。
位数:UNICODE字符集有多个编码方式,分别是UTF-8,UTF-16和UTF-32。
2 ,按所表示的文字分类语言字符集正式名称英语、西欧语ASCII,ISO-8859-1 MBCS 多字节简体中文GB2312 MBCS 多字节繁体中文BIG5 MBCS 多字节简繁中文GBK MBCS 多字节中文、日文及朝鲜语GB18030 MBCS 多字节各国语言UNICODE,UCS DBCS 宽字节三,编码UTF-8:采用变长字节(1 ASCII, 2 希腊字母, 3 汉字, 4 平面符号) 表示,网络传输, 即使错了一个字节,不影响其他字节,而双字节只要一个错了,其他也错了,具体如下:如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的字节数,其余各字节均以10开头。
UTF-8最多可用到6个字节。
UTF-16:采用2字节,Unicode 中不同部分的字符都同样基于现有的标准。
这是为了便于转换。
从0×0000到0×007F是ASCII字符,从0×0080到0×00FF是ISO-8859-1对ASCII的扩展。
希腊字母表使用从0×0370到0×03FF 的代码,斯拉夫语使用从0×0400到0×04FF的代码,美国使用从0×0530到0×058F的代码,希伯来语使用从0×0590到0×05FF的代码。
中国、日本和韩国的象形文字(总称为CJK)占用了从0×3000到0×9FFF的代码;由于0×00在c语言及操作系统文件名等中有特殊意义,故很多情况下需要UTF-8编码保存文本,去掉这个0×00。
举例如下:UTF-16: 0×0080 = 0000 0000 1000 0000 UTF-8: 0xC280 = 1100 0010 1000 0000 UTF-32:采用4字节。
优缺点UTF-8、UTF-16和UTF-32都可以表示有效编码空间(U+000000-U+10FFFF) 内的所有Unicode字符。
使用UTF-8编码时ASCII字符只占1个字节,存储效率比较高,适用于拉丁字符较多的场合以节省空间。
对于大多数非拉丁字符(如中文和日文)来说,UTF-16所需存储空间最小,每个字符只占2个字节。
Windows NT内核是Unicode(UTF-16),采用UTF-16编码在调用系统API时无需转换,处理速度也比较快。
采用UTF-16和UTF-32会有Big Endian和Little Endian之分,而UTF-8则没有字节顺序问题,所以UTF-8适合传输和通信。
UTF-32采用4字节编码,一方面处理速度比较快,但另一方面也浪费了大量空间,影响传输速度,因而很少使用。
四,如何判断字符集1,字节序首先说一下字节序对编码的影响,字节序分为Big Endian字节序和LittleEndian字节序。
不同的处理器可能不一样。
所以,传输时需要告诉处理器当时的编码字节序。
对于前者而言,高位字节存在低地址,低字节存于高地址;后者相反。
例如,0X03AB, Big Endian字节序0000: 0 3 0001: AB Little Endian字节序是0000: AB 0001: 0 3 2,编码识别UNICODE,根据前几个字节可以判断UNICODE字符集的各种编码,叫做Byte Order Mask方法BOM:UTF-8: EFBBBF (符合UTF-8格式,请看上面。
但没有含义在UCS即UNICODE中) UTF-16 Big Endian:FEFF (没有含义在UCS-2中) UTF-16 Little Endian:FFFE (没有含义在UCS-2中) UTF-32 Big Endian:0000FEFF (没有含义在UCS-4中) UTF-32 Little Endian:FFFE0000 (没有含义在UCS-4中) GB2312:高字节和低字节的第1位都是1。
BIG5,GBK&GB18030:高字节的第1位为1。
操作系统有默认的编码,常为GBK,可以下载别的并升级。
通过判断高字节的第1位从而知道是ASCII或者汉字编码。
#include <stdio.h>#include <windows.h>//GBK编码转换到UTF8编码int GBKToUTF8(unsigned char* lpGBKStr,unsigned char* lpUTF8Str,int nUTF8StrLen) {wchar_t * lpUnicodeStr = NULL;int nRetLen = 0;if(!lpGBKStr) //如果GBK字符串为NULL则出错退出return0;nRetLen = ::MultiByteToWideChar(CP_ACP,0,(char*)lpGBKStr,-1,NULL,NULL); //获取转换到Unicode编码后所需要的字符空间长度lpUnicodeStr = new WCHAR[nRetLen + 1]; //为Unicode字符串空间nRetLen = ::MultiByteToWideChar(CP_ACP,0,(char*)lpGBKStr,-1,lpUnicodeStr,nRetLe n); //转换到Unicode编码if(!nRetLen) //转换失败则出错退出return0;nRetLen = ::WideCharToMultiByte(CP_UTF8,0,lpUnicodeStr,-1,NULL,0,NULL,NULL); //获取转换到UTF8编码后所需要的字符空间长度if(!lpUTF8Str) //输出缓冲区为空则返回转换后需要的空间大小{if(lpUnicodeStr)delete []lpUnicodeStr;return nRetLen;}if(nUTF8StrLen < nRetLen) //如果输出缓冲区长度不够则退出{if(lpUnicodeStr)delete []lpUnicodeStr;return0;}nRetLen = ::WideCharToMultiByte(CP_UTF8,0,lpUnicodeStr,-1,(char*)lpUTF8Str,nUTF 8StrLen,NULL,NULL); //转换到UTF8编码if(lpUnicodeStr)delete []lpUnicodeStr;return nRetLen;}//使用这两个函数的例子int main(){char cGBKStr[] = "我是中国人!";char* lpGBKStr = NULL;char* lpUTF8Str = NULL;FILE * fp = NULL;int nRetLen = 0;nRetLen = GBKToUTF8((unsigned char*) cGBKStr,NULL,NULL);printf("转换后的字符串需要的空间长度为:%d ",nRetLen);lpUTF8Str = new char[nRetLen + 1];nRetLen = GBKToUTF8((unsigned char*)cGBKStr,(unsigned char*)lpUTF8Str,nRetLe n);if(nRetLen){printf("GBKToUTF8转换成功!");}else{printf("GBKToUTF8转换失败!");goto Ret0;}fp = fopen("C:\\GBKtoUTF8.txt","wb"); //保存到文本文件fwrite(lpUTF8Str,nRetLen,1,fp);fclose(fp);getchar(); //先去打开那个文本文件看看,单击记事本的“文件”-“另存为”菜单,在对话框中看到编码框变为了“UTF-8”说明转换成功了Ret0:{if(lpGBKStr)delete []lpGBKStr;if(lpUTF8Str)delete []lpUTF8Str;}return0;}Karlson,2009-07-25 13:39:571class CChineseCode23{45public:67static void UTF_8ToUnicode(wchar_t* pOut,char*pText); // 把UTF-8转换成U nicode89static void UnicodeToUTF_8(char* pOut,wchar_t* pText); //Unicode 转换成UT F-81011static void UnicodeToGB2312(char* pOut,wchar_t uData); // 把Unicode 转换成GB23121213static void Gb2312ToUnicode(wchar_t* pOut,char*gbBuffer);// GB2312 转换成Unicode1415static void GB2312ToUTF_8(string& pOut,char*pText, int pLen);//GB2312 转为UTF-81617static void UTF_8ToGB2312(string&pOut, char*pText, int pLen);//UTF-8 转为GB23121819};2021类实现2223void CChineseCode::UTF_8ToUnicode(wchar_t* pOut,char*pText)2425{2627char* uchar = (char*)pOut;2829uchar[1] = ((pText[0] & 0x0F) << 4) + ((pText[1] >> 2) & 0x0F);3031uchar[0] = ((pText[1] & 0x03) << 6) + (pText[2] & 0x3F);3233return;3435}3637void CChineseCode::UnicodeToUTF_8(char* pOut,wchar_t* pText)3839{4041// 注意WCHAR高低字的顺序,低字节在前,高字节在后4243char* pchar = (char*)pText;4445pOut[0] = (0xE0| ((pchar[1] & 0xF0) >> 4));4647pOut[1] = (0x80| ((pchar[1] & 0x0F) << 2)) + ((pchar[0] & 0xC0) >> 6);4849pOut[2] = (0x80| (pchar[0] & 0x3F));5051return;5253}5455void CChineseCode::UnicodeToGB2312(char* pOut,wchar_t uData)5657{5859WideCharToMultiByte(CP_ACP,NULL,&uData,1,pOut,sizeof(wchar_t),NULL,NULL); 6061return;6263}6465void CChineseCode::Gb2312ToUnicode(wchar_t* pOut,char*gbBuffer)6667{6869::MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,gbBuffer,2,pOut,1); 7071return;7273}7475void CChineseCode::GB2312ToUTF_8(string& pOut,char*pText, int pLen) 7677{7879char buf[4];8081int nLength = pLen* 3;8283char* rst = new char[nLength];8485memset(buf,0,4);8687memset(rst,0,nLength);8889int i = 0;9091int j = 0;9293while(i < pLen)9495{9697//如果是英文直接复制就可以9899if( *(pText + i) >= 0)100101{102103rst[j++] = pText[i++];104105}106107else108109{110111wchar_t pbuffer;112113Gb2312ToUnicode(&pbuffer,pText+i);114115UnicodeToUTF_8(buf,&pbuffer);116117unsigned short int tmp = 0;118119tmp = rst[j] = buf[0];120121tmp = rst[j+1] = buf[1];122123tmp = rst[j+2] = buf[2];124125j += 3;126127i += 2;128129}130131}132133rst[j] = '';134135//返回结果136137pOut = rst;138139delete []rst;140141return;142143}144145void CChineseCode::UTF_8ToGB2312(string&pOut, char*pText, int pLen) 146147{148149char* newBuf = new char[pLen];150151char Ctemp[4];152153memset(Ctemp,0,4);154156157int j = 0;158159while(i < pLen)160161{162163if(pText > 0)164165{166167newBuf[j++] = pText[i++];168169}170171else172173{174175WCHAR Wtemp;176177UTF_8ToUnicode(&Wtemp,pText + i); 178179UnicodeToGB2312(Ctemp,Wtemp); 180181newBuf[j] = Ctemp[0];182183newBuf[j + 1] = Ctemp[1];184185i += 3;186187j += 2;188189}190191}192193newBuf[j] = '';194195pOut = newBuf;196197delete []newBuf;198200201}1、将GBK转换成UTF8string GBKToUTF8(const std::string& strGBK){ string strOutUTF8 = "";WCHAR * str1;int n = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL, 0);str1 = new WCHAR[n];MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, str1, n); n = WideCharToMultiByte (CP_UTF8, 0, str1, -1, NULL, 0, NULL, NULL);char* str2 = new char[n];WideCharToMultiByte(CP_UTF8, 0, str1, -1, str2, n, NULL, NULL);strOutUTF8 = str2;delete[]str1;str1 = NULL;delete[]str2;str2 = NULL;return strOutUTF8;}Wi d e C h a r To M u l t i B y t e把U N I C O D E转换成A S C I I码。