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