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里面都是包含两个字节的定长编码,可以匹配所有的字符
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对基本汉字(unicode编码4E00-9FA5)进行笔画排序
- Java实现的utf8,gbk,unicode编码相互转换的代码
- java和vb进行socket通信以及java与c/c++/oc 进行socket通信时汉字字符串编码问题解决
- Java实现的utf8,gbk,unicode编码相互转换的代码
- java和vb进行socket通信以及java与c/c++/oc 进行socket通信时汉字字符串编码问题解决
- 聊聊计算机中的编码(Unicode,GBK,ASCII,utf8,utf16,ISO8859-1等)以及乱码问题的解决办法
- 使用Java对UTF8URL进行编码解码以及进行编码方式的判断
- python中的汉字编码问题,兼及Qt,兼及各种编码 unicode, utf8,gbk,gb2312,gb18030.....
- Java实现的utf8,gbk,unicode编码相互转换的代码
- 聊聊计算机中的编码(Unicode,GBK,ASCII,utf8,utf16,ISO8859-1等)以及乱码问题的解决办法
- cmd命令对java程序进行编译时出现:“编码GBK的不可映射字符”两种解决方法,以及dos下帮助文档的制作
- python:正确的对未知编码的字符串进行预处理-Unicode-UTF8-gbk
- 查询任意汉字的Unicode编码,UTF8编码,GB2312编码,GBK编码
- Java与编码问题串讲之一--ANSI、Unicode与UTF8
- GB18030编码研究以及GBK、GB18030与Unicode的映射[转]
- 【JAVA编码】 JAVA字符编码系列二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换
- JAVA字符编码系列二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换
- GB18030编码研究以及GBK、GB18030与Unicode的映射
- GBK/GB2312编码问题分析以及java获取汉字国标码
- JAVA字符编码系列二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换