龙海市建设局网站,网站开发税收标准,如何在虚拟主机一键安装wordpress,ps个人网页设计模板图片UTF-8 采用变长度字节来表示字符#xff0c;理论上最多可以到 6 个字节长度(一个字符六个字节)。UTF-8 编码兼容了 ASC II(0-127)#xff0c; 也就是说 UTF-8 对于 ASC II 字符的编码是和 ASC II 一样的。对于超过一个字节长度的字符#xff0c;才用以下编码规范#xff1a…UTF-8 采用变长度字节来表示字符理论上最多可以到 6 个字节长度(一个字符六个字节)。UTF-8 编码兼容了 ASC II(0-127) 也就是说 UTF-8 对于 ASC II 字符的编码是和 ASC II 一样的。对于超过一个字节长度的字符才用以下编码规范左边第一个字节1的个数表示这个字符编码字节的位数例如两位字节字符编码样式为为110xxxxx 10xxxxxx三位字节字符的编码样式为1110xxxx 10xxxxxx 10xxxxxx.以此类推六位字节字符的编码样式为1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx。xxx 的值由字符编码的二进制表示的位填入。只用最短的那个足够表达一个字符编码的多字节串。例如Unicode 字符 00 A9(版权符号) 1010 1001UTF-8 编码为11000010 10101001 0x C2 0xA9;字符 22 60 (不等于符号) 0010 0010 0110 0000UTF-8 编码为11100010 10001001 10100000 0xE2 0x89 0xA0代码package com.lang.string;public class ConverFromGBKToUTF8 {public static void main(String[] args){try {ConverFromGBKToUTF8 convert new ConverFromGBKToUTF8();byte [] fullByte convert.gbk2utf8(chenese);String fullStr new String(fullByte, UTF-8);System.out.println(string from GBK to UTF-8 byte: fullStr);} catch (Exception e) {e.printStackTrace();}}public byte[] gbk2utf8(String chenese){char c[] chenese.toCharArray();byte [] fullByte new byte[3*c.length];for(int i0; iint m (int)c[i];String word Integer.toBinaryString(m);// System.out.println(word);StringBuffer sb new StringBuffer();int len 16 - word.length();//补零for(int j0; jsb.append(0);}sb.append(word);sb.insert(0, 1110);sb.insert(8, 10);sb.insert(16, 10);// System.out.println(sb.toString());String s1 sb.substring(0,8);String s2 sb.substring(8,16);String s3 sb.substring(16);byte b0 Integer.valueOf(s1, 2).byteValue();byte b1 Integer.valueOf(s2, 2).byteValue();byte b2 Integer.valueOf(s3, 2).byteValue();byte[] bf new byte[3];bf[0] b0;fullByte[i*3] bf[0];bf[1] b1;fullByte[i*31] bf[1];bf[2] b2;fullByte[i*32] bf[2];}return fullByte;}}UTF-8的编码原理和特性U0000~U007E 1 _ _ _ _ _ _ _ (7bits)U0080~U07FF 1 1 0_ _ _ _ _ 1 0_ _ _ _ _ _ (11bits)U0800~UFFFF 1 1 1 0 _ _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _ (16bits)