首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

正则表达式和Unicode编码的有关问题

2012-12-23 
正则表达式和Unicode编码的问题String text \u5f53\u7b2c\u4e00System.out.println( text )运行输出

正则表达式和Unicode编码的问题
String text = "\u5f53\u7b2c\u4e00";
System.out.println( text );
运行输出结果为:"第一个“;

把上面的text字符窜,保存到文本文件中,然后读取出来
        Pattern p = Pattern.compile("(\\\\u\\w{4})+");
     Matcher m = p.matcher(text);

     while( m.find() ) {
     String str = m.group();
   System.out.println( str) );
                //此处输出结果为:\u5f53\u7b2c\u4e00  而不是对应的中文字符:第一个
                //请问如何才能让输出其对应的中文字符窜:第一个 呢

     } 
[解决办法]
这个有法吗?
String text = "\u5f53\u7b2c\u4e00";就直接是汉字了,下面的正则貌似不能再起作用了
[解决办法]
文件读取的要转码,网上很多,你百度下,unicode转成字符串
[解决办法]
可以使用org.apache.commons.lang.StringEscapeUtils#unescapeJava(String)方法
[解决办法]
可以使用jdk自带的native2ascii.exe来转换,


Runtime r=Runtime.getRuntime();
Process p=r.exec("cmd /C native2ascii.exe -encoding unicode d:\\a.txt", null, new File("D:\\Program Files\\Java\\jdk1.6.0_22\\bin"));//使用cmd执行native2ascii.exe -encoding转换编码为unicode我的native2ascii在D:\Program Files\Java\jdk1.6.0_22\bin文件夹下,你可以根据你的native2ascii的所在目录指定
//转换完后用Process的getInputStream从运行命令中获取输入流来读取转换后的编码字符,接下来就可以用你的正则了
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
String text=null;
while((text=br.readLine())!=null)
      System.out.println(text);
br.close();

热点排行