java中以utf8和gbk编码的汉字对应的二进制,以及用unicode进行正则匹配

import java.io.UnsupportedEncodingException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TestUnicode {
 public static void main(String[] args) throws UnsupportedEncodingException  {
  String aa="我";
  byte[] aag = aa.getBytes("gbk");
  System.out.println("\"我\"gbk对应的的二进制:");
  for(byte aag1:aag){
   //System.out.println(aag1);
   System.out.println(Integer.toHexString(aag1 & 0xFF));
  }
  System.out.println("*******前后两种不同编码********************");
  System.out.println("\"我\"utf8对应的的二进制:");
  byte[] aau = aa.getBytes("utf8");
  for(byte aau1:aau){
   //System.out.println(aau1);
   System.out.println(Integer.toHexString(aau1 & 0xFF));
  }
  System.out.println("通过二进制数据还原字符");
  byte[] bbg={(byte) 0xce,(byte) 0xd2};
  System.out.println("gbk:   "+new String(bbg,"gbk"));
  byte[] bbu={(byte) 0xE6,(byte) 0x88,(byte) 0x91};
  System.out.println("utf8:   "+new String(bbu,"utf8"));
  Pattern pa = Pattern.compile("([\u4e00-\u9fa5]+)", Pattern.CANON_EQ );//汉字对应的unicode码范围在\u4e00-\u9fa5
     Matcher maer = pa.matcher("我ddd们都是好人");
     if(maer.find(2)){
           System.out.println(maer.group());
     }
     Pattern pa1 = Pattern.compile("([\u0030-\u0039]+)", Pattern.CANON_EQ );//数字对应的unicode码范围在\u0030-\u0039等价于\d或者[0-9]
     Matcher maer1 = pa1.matcher("我ddd2333们都是好人");
     if(maer1.find(2)){
           System.out.println(maer1.group());
     }
     System.out.println("使用unicode码范围来匹配可以任意匹配,所有的汉字或字母在unicode里面都是包含两个字节的定长编码,可以匹配所有的字符");
}

}

 

 

运行后:

"我"gbk对应的的二进制:
ce
d2
*******前后两种不同编码********************
"我"utf8对应的的二进制:
e6
88
91
通过二进制数据还原字符
gbk:   我
utf8:   我
们都是好人
2333
使用unicode码范围来匹配可以任意匹配,所有的汉字或字母在unicode里面都是包含两个字节的定长编码,可以匹配所有的字符

你可能感兴趣的:(java中以utf8和gbk编码的汉字对应的二进制,以及用unicode进行正则匹配)