您的位置:首页 > 编程语言 > Java开发

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

2013-02-20 09:54 549 查看
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里面都是包含两个字节的定长编码,可以匹配所有的字符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐