UTF8与GBK字符编码之间的相互转换

合集下载

常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、...

常用字符集编码详解: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位编码空间来支持汉字。

qt下utf8编码与gbk编码的相互转换(附实例)

qt下utf8编码与gbk编码的相互转换(附实例)

qt下utf8编码与gbk编码的相互转换(附实例) /** author: hjjdebug* date: 2017年 09⽉ 01⽇星期五 22:35:38 CST* 说明:* 有⼀个打印机,只⽀持gdk编码, ⽽我的程序是linux, utf8是本地编码.我需要⼀个简单的utf8向gdk转换的程序. ⽹上⼤多不能直接使⽤,下⾯附上⾃⼰整理和测试的代码. 花了我不少时间, QT 环境.代码解读: utf8 与 gdk 不能直接进⾏转换,⽽需要借助于unicode来进⾏变换.utf8向gdk转换的过程是utf8->unicode, unicode->gdk.第⼀步变换需要utf8 QTextCodec,第⼆步变换需要gdk QTextCodec,同理, gbk 向utf8转换也是⼀样请重点关注他们的char *p内容的变化.⾄于包在QString⾥,还是包在QByteArray⾥,这不重要.付测试代码!!"您好" utf8编码: e6 82 a8 e5 a5 bd"您好" gbk编码: c4 fa ba c3*/[cpp] view plain copy print?1. #include <stdio.h>2. #include <string.h>3. #include <QString>4. #include <QTextCodec>5.6. void printContent(char *p)7. int main()8. {9. QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");10. QTextCodec::setCodecForLocale(utf8);11. QTextCodec::setCodecForCStrings(utf8);12. QTextCodec* gbk = QTextCodec::codecForName("gbk");13.14. unsigned int i;15. QString str1="您好";16. char *p=str1.toLocal8Bit().data(); //如此可以等到它的char*17. printContent(p);18.19. //utf8 -> gbk20. //1. utf8 -> unicode21. QString strUnicode= utf8->toUnicode(str1.toLocal8Bit().data());22. //2. unicode -> gbk, 得到QByteArray23. QByteArray gb_bytes= gbk->fromUnicode(strUnicode);24. p = gb_bytes.data(); //获取其char *25. printContent(p);26.27. //gbk -> utf828. //1. gbk to unicode29. strUnicode=gbk->toUnicode(p);30. //2. unicode -> utf-831. QByteArray utf8_bytes=utf8->fromUnicode(strUnicode);32. p = utf8_bytes.data(); //获取其char *33. printContent(p);34. }35.36. void printContent(char *p)37. {38. //打印其内容, char *39. for(i=0;i<strlen(p);i++)40. printf("%02x ",(unsigned char)p[i]);41. printf("\n");42. }。

Unicode,UTF8,GB2312,UCS2,GBK

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编码的交集

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!。

UTF-8、GB2312、GBK编码格式详解和编码示例

UTF-8、GB2312、GBK编码格式详解和编码示例

UTF-8、GB2312、GBK编码格式详解和编码⽰例UTF-8、GB2312、GBK编码格式详解UTF-8使⽤1~4个字节对每个字符进⾏编码128个ASCII字符字需要⼀个字节编码带有附加符号的拉丁⽂、希腊⽂、西⾥尔字母、亚美尼亚语、希伯来⽂、阿拉伯⽂、叙利亚⽂及它拿字母则需要两个字节进⾏编码其他基本多⽂种平⾯中的字符(这包含了⼤部分常⽤字,如⼤部分的汉字)使⽤三个字节编码其他极少使⽤的Unicode辅助平⾯的字符使⽤四⾄六字节编码GB2312,GBK编码GB2312:⼀个⼩于127的字符意义与原来的相同,但是两个⼤于127的字符连在⼀起时,就表⽰⼀个汉字;前⾯的⼀个字节(⾼字节)从0xA1⽤到0xF7,后⾯⼀个字节(低字节)从0xA1到0xFE;其中,在ASCII⾥本来就有个的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的“全⾓”字符,⽽原来在127号以下的那些就叫“半⾓”字符GBK:不再要求低字节⼀定是127号之后的编码,只要第⼀个字节是⼤于127就固定表⽰这是⼀个汉字的开始,不管后⾯跟的是不是扩展字符集⾥的内容例⼦以下例⼦使⽤nodeJS来编写,具体代码和相关测试⽂件可见。

联通参考⽂章中给出了⼀个⽐较经典的例⼦,在这⾥详细研究⼀下。

------------------⾮UTF-8编码保存的[联通]数据------------------<Buffer c1 aa cd a8>------------------UTF-8编码保存的[联通]数据-带BOM------------------<Buffer ef bb bf e8 81 94 e9 80 9a>------------------UTF-8编码保存的[联通]数据-不带BOM------------------<Buffer e8 81 94 e9 80 9a>可以清楚看到window默认编码格式GB2312和UTF-8编码格式的区别:GB2312使⽤两个字节对汉字进⾏编码,⽽UTF-8使⽤三个字节对汉字进⾏编码UTF-8带BOM的编码格式和不带BOM的编码格式之间的区别:BOM格式会在头部添加ef bb bf三个字节作为标志中英⽂混合这个主要是看各个编码格式对于ASCII编码的兼容情况------------------⾮UTF-8编码保存的[hello 你好]数据------------------<Buffer 68 65 6c 6c 6f 20 c4 e3 ba c3>------------------UTF-8编码保存的[hello 你好]数据-带BOM------------------<Buffer ef bb bf 68 65 6c 6c 6f 20 e4 bd a0 e5 a5 bd>------------------UTF-8编码保存的[hello 你好]数据-不带BOM------------------<Buffer 68 65 6c 6c 6f 20 e4 bd a0 e5 a5 bd>可以看出,两种编码格式对ASCII都能兼容,前⾯的[hello ]两者的编码是⼀致的,⽽中⽂字符编码则是根据各⾃不同的编码规则来得如果只有ASCII字符,则两种编码是等价的,GB2312⽅式打开UTF-8编码的⽂件不会出现乱码,反之亦然编码格式区分带有BOM信息的,可以根据BOM信息进⾏区分:前三个字节为:ef bb bf的是UTF-8编码格式没有BOM信息的,则需要按字节进⾏区分:如果UTF-8中有中⽂字符,则可以根据1110XXXX 10XXXXXX 10XXXXXX这种格式来进⾏区分;如果UTF-8中有其他两个字节编码的字符则较难进⾏区分,希望有⼈可以给指点。

UTF8GBK之间的转换

UTF8GBK之间的转换
// 1、将GBK转换成UTF8
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; }

网络编码GB2312、GBK与UTF-8的区别

网络编码GB2312、GBK与UTF-8的区别

⽹络编码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的编码⽅式解析页⾯,我们可以看到奇迹发⽣了:var script = document.createElement('script'); script.src = '/resource/baichuan/ns.js';document.body.appendChild(script);百度页⾯上所有的汉字都变成了乱码。

【miscellaneous】【CC++语言】UTF8与GBK字符编码之间的相互转换

【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这样的⽂件。

转utf8出错,非utf8的二进制数组

转utf8出错,非utf8的二进制数组

转utf8出错,非utf8的二进制数组转utf8出错,非utf8的二进制数组是一种常见的编码问题,经常出现在字符串处理和文件转换过程中。

当我们需要将一段文本从一种编码格式转换为另一种编码格式时,会遇到各种问题,其中最常见的就是转换后的结果出现乱码或不完整的情况。

本文将针对这个问题做一个详细的介绍和解决方案的讨论,希望能够解决你在编码转换过程中遇到的相关问题。

一、什么是UTF-8编码?UTF-8是一种Unicode字符编码,它是以字节为单位来编码Unicode字符的一种变长编码方式,可以用来表示任意字符集中的任意字符。

UTF-8的最大优点在于它是兼容ASCII字符集的,这就使得传统ASCII编码的文本在转换为UTF-8编码时不需要任何变更,从而实现了对于传统ASCII 编码的向后兼容。

对于UTF-8编码,它使用1到4个字节来表示一个字符。

对于英文字母和数字这样的ASCII字符,UTF-8使用1个字节来表示。

而对于UTF-8中的一些较为特殊的字符,比如中文、日文、韩文等非ASCII字符,UTF-8需要使用两个或多个字节来表示。

UTF-8编码是一个非常流行的编码方式,很多软件都支持使用UTF-8编码来存储和处理文本数据。

二、转换UTF-8出错的原因当我们需要将一个非UTF-8编码的字符串转换为UTF-8编码时,常常会遇到转换出错的情况。

出现这种问题的原因通常是由于使用了错误的转换方式导致的。

在下面的内容中,我们将讨论一些常见的错误转换方式,并分析它们导致的错误原因。

1.简单复制最常见的错误转换方式之一就是简单地将源字符串的字节值复制到目标字符串中。

这种方式非常简单,但是很容易出错。

因为在不同的编码方式中,同一个字符的字节值可能是不同的,这就导致了简单复制方式不能正确地将所有字符都转换为目标编码方式。

例如,当我们需要将一个GBK编码的字符串转换为UTF-8编码时,使用简单复制的方式来完成这个任务就会出错。

JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换

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)生成的字节数组,在构造回字符串时,使用的是正确的编码集合,如果使用的不是正确的编码集合会怎样呢?会正确构造吗?如果不能正确构造能有办法恢复吗?会信息丢失吗?下面我们就来看看这种情况,这部分可以说明在某些情况下虽然我们最终正确显示了结果,但其间仍然进行了不正确的转换。

C#_汉字与GBK,Unicode,UTF-8编码之间的转换

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互转乱码的原因

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编码的字节上,形成了错误的字符。

mysql 编码函数

mysql 编码函数

mysql 编码函数摘要:1.MySQL 编码函数概述2.常用的MySQL 编码函数3.编码函数的应用实例4.总结正文:【1.MySQL 编码函数概述】MySQL 编码函数是用于处理字符串的编码和解码的函数,可以帮助开发者在进行数据处理和显示时,实现字符串的正确显示和操作。

在MySQL 中,编码函数主要涉及到字符串的GBK 编码和UTF-8 编码之间的转换。

【2.常用的MySQL 编码函数】在MySQL 中,常用的编码函数主要包括以下几种:(1) GBK 编码函数:- CHAR(n): 将字符串转换为GBK 编码的字符- VARCHAR(n): 将字符串转换为GBK 编码的字符串,并限制长度(2) UTF-8 编码函数:- CONVERT(gbk(s)): 将GBK 编码的字符串转换为UTF-8 编码的字符串- CONVERT(utf8(s)): 将UTF-8 编码的字符串转换为GBK 编码的字符串【3.编码函数的应用实例】以下是编码函数在实际应用中的一些实例:(1) 将一个字符串存储到数据库中:```INSERT INTO table_name (column_name) VALUES (CHAR(‘你好,世界!’));```(2) 从数据库中获取一个字符串,并将其转换为UTF-8 编码:```SELECT CONVERT(utf8(column_name)) FROM table_name;```(3) 将一个UTF-8 编码的字符串转换为GBK 编码,并将其存储到数据库中:```INSERT INTO table_name (column_name) VALUES (CONVERT(gbk(‘你好,世界!’)));```(4) 从数据库中获取一个GBK 编码的字符串,并将其转换为UTF-8 编码:```SELECT CONVERT(utf8(column_name)) FROM table_name;```【4.总结】MySQL 编码函数在实际应用中发挥着重要作用,能够帮助开发者处理字符串的编码和解码问题,实现字符串的正确显示和操作。

Javagbk转utf-8

Javagbk转utf-8

Javagbk转utf-81、⽂件转码:使⽤脚本gbk转utf-8的脚本⽂件:#!/bin/bashFILE_SUFFIX="java xml html vm js"# FILE_SUFFIX="vm"file_names=""for x in $FILE_SUFFIXdofile_names=`find . -name "*.$x" | xargs file -I | grep -v utf-8 | awk -F " |:" '{print $1}'`for file_name in $file_namesdo# echo $file_nameiconv -f cp936 -t UTF-8 $file_name >$file_name".new" &&mv -f "$file_name.new" "$file_name"doneecho "$x ok"donefind . -name "*.xml" | xargs sed -i "" "/<?xml/s/GBK/UTF-8/g"find . -name "*.xml" | xargs sed -i "" "/<?xml/s/GB2312/UTF-8/g"echo "xml head is ok!"find . -name "pom.xml" | xargs sed -i "" "/<encoding>/s/GBK/UTF-8/g"find . -name "pom.xml" | xargs sed -i "" "/<encoding>/s/GB2312/UTF-8/g"find . -name "pom.xml" | xargs sed -i "" "/project.build.sourceEncoding/s/GBK/UTF-8/g"find . -name "pom.xml" | xargs sed -i "" "/project.reporting.outputEncoding/s/GBK/UTF-8/g"find . -name "pom.xml" | xargs sed -i "" "s/pop-vender-common-pageframe/pop-vender-common-pageframe-utf8/g" echo "pom.xml is ok!"find . -name "*.properties" | xargs sed -i "" "/input.encoding/s/GBK/UTF-8/g"find . -name "*.properties" | xargs sed -i "" "/output.encoding/s/GBK/UTF-8/g"echo "velocity properties is OK!"find . -name "strut*.xml" | xargs sed -i "" '/struts.i18n.encoding/s/GBK/UTF-8/g'echo "struts xml is ok!"find . -name "*.vm" | xargs sed -i "" "s/\/common\/js\/jdmsg\/jd-msg.js/\/common\/js\/jdmsg\/jd-msg-utf8.js/g" find . -name "*.vm" | xargs sed -i "" "/\/ui.datepicker.js/s/<script t/<script charset=\"GBK\" t/g"find . -name "*.vm" | xargs sed -i "" "/\/jquery-calendar.js/s/<script t/<script charset=\"GBK\" t/g"echo "vm is ok"echo "finished"# echo $file_names2、⽂件转码后,本地环境改成utf-8环境,可能会有部分乱码⽂件,⼿动修复3、含有中⽂js引⽤增加charset="gbk"如依赖:、4、打包编译编码:替换成UTF-85、xml设置格式:以前可能为gbk或gb2312,改成utf-86、web.xml转成UTF-8,请求拦截器字符编码如使⽤spring配置<!--Character Encoding filter(字符集拦截转换) --><filter><filter-name>charsetFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter>7、代码GBK使⽤主要是代码⾥⾯写死GBK⽅式如string.getBytes("GBK")替换8、jdurl配置编码增加<property name="charsetName" value="utf-8"/>避税分页中含有中⽂乱码如:jdurl的编码设置:<bean class="ponent.url.PopJdUrl"><property name="url" value="${pop-vender.login.address}"/><property name="charsetName" value="utf-8"/></bean>⼤概是这8条重点在后⾯:这时你会发现,页⾯的get请求请求服务器时还是会出现乱码,别慌,那是因为tomcat的编码你还没有设置.利⽤request.setCharacterEncoding("UTF-8");来设置Tomcat接收请求的编码格式,只对POST⽅式提交的数据有效,对GET ⽅式提交的数据⽆效!要设置GET的编码,可以修改server.xml⽂件中,相应的端⼝的Connector的属性:URIEncoding="UTF-8",这样,GET⽅式提交的数据才会被正确解码。

Python字符编码转码之GBK,UTF8互转

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的了咋办呢?⼴告回来,更加精彩。

JAVA编码之 ASCII、Unicode、GBK和UTF-8字符编码的区别联系

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)

批量转换⽂件字符编码(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(及以上)。

encode中文编码规则

encode中文编码规则

encode中文编码规则摘要:1.中文编码规则概述2.GBK 编码3.UTF-8 编码4.UTF-16 编码5.编码转换方法正文:一、中文编码规则概述中文编码规则是指将中文字符转换为计算机可以识别和处理的二进制编码的方法。

在计算机内部,所有的字符都是以二进制形式存在的,因此为了在计算机中处理中文字符,我们需要将其转换成二进制编码。

中文编码规则有多种,其中较为常见的有GBK 编码、UTF-8 编码、UTF-16 编码等。

二、GBK 编码GBK 编码,全称为GB/T 13000.1-1993《信息交换用汉字编码字符集第一部分:GBK》,是我国国家标准中的一种汉字编码方式。

GBK 编码包含了6763 个汉字,以及一些符号、字母和数字,总共有16068 个字符。

GBK 编码采用两个字节表示一个汉字,其编码范围为0xA1A1 至0xF7FE。

三、UTF-8 编码UTF-8 编码是一种可变长度的编码方式,可以表示世界上所有的字符。

UTF-8 编码将字符分为三种:ASCII 字符、非ASCII 字符(但属于BMP 字符集)和非BMP 字符。

ASCII 字符使用一个字节表示,非ASCII 字符(但属于BMP 字符集)使用两个字节表示,非BMP 字符使用三个或四个字节表示。

由于UTF-8 可以表示所有的Unicode 字符,所以已经成为了广泛使用的字符编码方式。

四、UTF-16 编码UTF-16 编码也是一种可变长度的编码方式,可以表示世界上所有的字符。

UTF-16 编码将字符分为两种:ASCII 字符和非ASCII 字符。

ASCII 字符使用一个字节表示,非ASCII 字符使用两个字节表示。

UTF-16 编码的主要优点是它的编码值是偶数,这使得在计算机内部进行字符串操作时更加方便。

五、编码转换方法在不同的编码方式之间进行转换,通常需要通过特定的算法来实现。

例如,将GBK 编码转换为UTF-8 编码,需要先将GBK 编码转换为Unicode 编码,再将Unicode 编码转换为UTF-8 编码。

GolangGBK转UTF-8的例子

GolangGBK转UTF-8的例子
这篇文章主要介绍了教你一分钟在win10终端成功安装pytorch的方法步骤文中通过示例代码介绍的非常详细对大家的学习或者工作具有一定的参考学习价值需要的朋友们下面随着小编来一起学习学习吧
GolangGBK转 UTF-8的例子
问题:在 Golang 的调试过程中出现中文乱码 原因:Golang 默认不支持 UTF-8 以外的字符集 解决:将字符串的编码转换成UTF-8 首先需要 mahonia 这个包
go get githubBiblioteka com/axgle/mahonia
然后新建一个 func src 字符串 srcCode 字符串当前编码 tagCode 要转换的编码
func ConvertToString(src string, srcCode string, tagCode string) string { srcCoder := mahonia.NewDecoder(srcCode) srcResult := srcCoder.ConvertString(src) tagCoder := mahonia.NewDecoder(tagCode) _, cdata, _ := tagCoder.Translate([]byte(srcResult), true) result := string(cdata) return result }
例子: 调用 ConvertToString 方法
str := "乱码的字符串变量" str = ConvertToString(str, "gbk", "utf-8") fmt.Println(str)
以上这篇Golang GBK转UTF-8的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

UTF8与GBK字符编码之间的相互转换C++ 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另存一个文件,那么则肯定不是这个,而是11001111111000111011110110110110 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字节序和Little Endian字节序。

不同的处理器可能不一样。

所以,传输时需要告诉处理器当时的编码字节序。

对于前者而言,高位字节存在低地址,低字节存于高地址;后者相反。

例如,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,nRetLen); //转换到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,nUTF8StrLen,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,nRetLen);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转换成Unicode89static void UnicodeToUTF_8(char* pOut,wchar_t* pText);//Unicode 转换成UTF-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;2829 uchar[1] = ((pText[0] & 0x0F) << 4) + ((pText[1] >> 2) & 0x0F); 3031 uchar[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;4445 pOut[0] = (0xE0 | ((pchar[1] & 0xF0) >> 4));4647 pOut[1] = (0x80| ((pchar[1] & 0x0F) << 2)) + ((pchar[0] & 0xC0) >> 6);4849 pOut[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,NU LL);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];8485 memset(buf,0,4);8687 memset(rst,0,nLength);8889int i = 0;9091int j = 0;9293while(i < pLen)9495 {9697//如果是英文直接复制就可以9899if( *(pText + i) >= 0)100101 {102103 rst[j++] = pText[i++];104105 }106107else108109 {110111 wchar_t pbuffer;112113 Gb2312ToUnicode(&pbuffer,pText+i); 114115 UnicodeToUTF_8(buf,&pbuffer);116117 unsigned short int tmp = 0;118119 tmp = rst[j] = buf[0];120121 tmp = rst[j+1] = buf[1];122123 tmp = rst[j+2] = buf[2];124125 j += 3;126127 i += 2;128129 }130131 }132133 rst[j] = '';134135//返回结果136137 pOut = rst;138139 delete []rst;140141return;142143 }144145void CChineseCode::UTF_8ToGB2312(string &pOut, char *pText, int pLen)146147 {148149char * newBuf = new char[pLen];150151char Ctemp[4];152153 memset(Ctemp,0,4);154155int i =0;156157int j = 0;158159while(i < pLen)160161 {162163if(pText > 0)164165 {166167 newBuf[j++] = pText[i++]; 168169 }170171else172173 {174175 WCHAR Wtemp;176177 UTF_8ToUnicode(&Wtemp,pText + i);178179 UnicodeToGB2312(Ctemp,Wtemp);180181 newBuf[j] = Ctemp[0];182183 newBuf[j + 1] = Ctemp[1];184185 i += 3;186187 j += 2;188189 }190191 }192193 newBuf[j] = '';194195 pOut = newBuf;196197 delete []newBuf;198199return;200201 }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码。

相关文档
最新文档