汉字转unicode

字符串的编码格式:

string hex = ” \ u5df 2 \ u5b9e \ u540d \ u 5236 “;//十六进制

String dec = ” G//十进制系统

String s= “实名登记制”;//字符串

相互转换代码

1.十进制到unicode编码

公共静态字符串decToHex(String s){ String[]ds = s . split(“;”);string buffer f = new string buffer();for(int I = 0;我& ltds .长度;i++){ if(ds[i]。starts with(” “){ Integer tem = Integer . parse int(ds[I])。替换(“,” “));f.append(“\u “)。append(integer . tohexstring(tem));} }返回f . tostring();}2.unicode到char数组

/** * unicode转字符数组*/public static char[]Unicode 2 cars(String Unicode){ String buffer String = New String buffer();string[]hex = unicode . split(” \ \ \ \ u “);char[]cs = new char[hex . length];for(int I = 1;我& lt十六进制长度;I++) {//转换每个码位Intdata = integer。Parseint (hex [I],16);cs[i]=(char)数据;}返回cs;} 3.中文字符到unicode

/* * * * @ param Chinese character * @ return unicode code */public static string to unicode(strings){ string as[]= new string[s . length()];字符串s1 =for(int I = 0;我& lts.length()。i++){ as[I]= integer . tohexstring(s . charat(I)& amp;0x ffff);S1 = S1+” \ \ u “+as[I];}返回S1;}utf-8

utf-8格式的中文由三个字节组成。

UTF-8编码规则非常简单,只有两条:

1)对于单字节符号,字节的第一位设置为0,接下来的7位是该符号的unicode编码。因此,UTF-8编码和ASCII编码对于英文字母是相同的。

2)对于n字节的符号(n >;1),第一个字节的前n位全部设置为1,第n+1位设置为0,下一个字节的前两位全部设置为10。剩下没有提到的位都是这个符号的unicode码。

下表总结了编码规则,字母X表示可以编码的位数。

Unicode符号范围| UTF 8编码

(十六进制)|(二进制)

– + –

0000 0000-0000 007F | 0xxxxxxx

0000 0080-0000 07FF | 110 xxxxx 10 xxxxx

0000 0800-0000 FFFF | 1110 xxxxx 10 xxxxx 10 xxxxx

0001 0000-0010 FFFF | 11110 xxxxx 10 xxxxx 10 xxxxx 10 xxxxx

1.中文到unicode

public static String toUnicode(String s){ String as[]= new String[s . length()];字符串s1 =for(int I = 0;我& lts.length()。i++){ as[I]= integer . tohexstring(s . charat(I)& amp;0x ffff);S1 = S1+” \ \ u “+as[I];}返回S1;}2.中文到字节

byte[]b = s . getbytes(” utf-8 “);3.unicode到utf-8

/* *从Unicode到utf-8的转换过程。* @param要转换的汉字* @返回汉字UTF-8编码字节序列用十六进制表示/*/公共静态字符串unicode 2 utf 8(charinput){/1 byte = 8 byte 16位取值范围00 ~ ff//输入两个字节16位取值范围4e 00 ~ 9 fa 5 intlow byte = input &;0x 00 ff;int highByte =(输入& amp0xff00)>& gt& gt8;//UTF-8的第一个字节是1110+highByte,高4位int high 4 in high byte =(high byte &;0xf0)>& gt& gt4;int utf 8 byte 1 =(7 & lt;& lt5)+high 4 inhighbyte;//UTF-8的第二个字节是10+高字节的低4位+低字节的高2位int low 4 inhighbyte = high byte & 0x0f;int high 2 inlow byte =(low byte & amp;0xc0)>& gt& gt6;int utf 8 byte 2 =(1 & lt;& lt7)+(low 4 inhighbyte & lt;& lt2)+high 2 inlow byte;//UTF-8的第三个字节是10+lowByte,低6位IntutF8 Byte3 = (1

GBK编码是GB2312编码的扩展,因此完全兼容GB2312-80标准。GBK仍然采用双字节编码方案,其编码范围为8140-FEFE,不包括xx7F码位,共有23940个码位。共收集了21886个汉字和图形符号,其中汉字(包括偏旁部首和部件)21003个,图形符号883个。GBK编码支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的所有汉字,并包含BIG5编码中的所有汉字。GBK编码方案于1995年12月15日正式发布,该版本的GBK规范为1.0版。

GBK也用双字节表示,整体编码范围是8140-FEFE,第一个字节在81-FE之间,最后一个字节在40-FE之间,不包括一行xx7F。共23940个码点,包括21886个汉字和图形符号,其中汉字(包括偏旁部首和部件)21003个,图形符号883个。

所有代码分为三部分:

1.汉字区。包括:

A.GB 2312汉字区。即GBK/2: B0A1-F7FE。GB 2312有6763个汉字,按原顺序排列。

B.GB 13000.1扩展了汉字区域。包括:

(1) GBK/3: 8140-A0FE .包括GB 13000.1中的6080个CJK汉字。

(2) GBK/4: AA40-FEA0 .包括CJK汉字和8160个增补汉字。CJK汉字优先,按UCS码大小排列;补充汉字(包括偏旁部首和部件)按《康熙字典》页码/位置排在最后。

(3)汉字“è”排列在图形符号区GBK/5: A996中。

2.图形符号区。包括:

A.GB 2312非汉字符号区。那就是GBK/1: A1A1-A9FE。除了GB 2312的符号,还有GB 12345补充的10个小写罗马数字和符号。共有717个符号。

B.GB 13000.1扩展了非汉字区。即GBK/5: A840-A9A0。BIG-5非中文符号、结构符号和“零”排列在这个区域。有166个符号。

3.用户自定义区域:分为(1)、(2)、(3)三个社区。

(1) AAA1-AFFE,具有564个编码比特。

(2) F8A1-FEFE,具有658个代码位置。

(3) A140-A7A0,具有672个代码位。

尽管区域(3)对用户开放,但其使用受到限制,因为不排除未来在该区域添加新字符的可能性。

例如:

String s= “中文”;byte[]b = s . getbytes(” gbk “);字节数是

[-42, -48, -50, -60]

补充是:

【214,208,206,196】

转换为十六进制,并前进到

【D6、D0、CE、C4】

根据gbk表查找汉字

汉字转unicode

密码完全匹配。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

发表回复

登录后才能评论