java中utf转为中文

最近有同事问http url中或者cookie中被译码的中文怎么被转换回来。

 

我们知道用jdk自带的:native2ascii 可以将中文和unicode来回转的,但是java里怎么搞呢。

 

这里记录下简单的装换方式

 

例如有中文 “测试中文转换”

 

用native2ascii 生成的unicode 如下

 

\u6d4b\u8bd5\u4e2d\u6587\u8f6c\u6362

 

然后这个编码如果再被url encode下就会变为这样

 

%5Cu6d4b%5Cu8bd5%5Cu4e2d%5Cu6587%5Cu8f6c%5Cu6362

 

在java里可以借助一些辅助类 将

%5Cu6d4b%5Cu8bd5%5Cu4e2d%5Cu6587%5Cu8f6c%5Cu6362  还原为 “测试中文转换”

 

或者将 \u6d4b\u8bd5\u4e2d\u6587\u8f6c\u6362 还原为 “测试中文转换”

 

首先java里对应的url encode类是

 

URLEncoder  和 URLDecoder

 

从unicode到 中文可以使用apache下的common-lang里的  StringEscapeUtils.unescapeJava方法。

 

例如需要将url encode后的字符串还原到 中文的话 需要如下的调用

 

        String abc="%5Cu6d4b%5Cu8bd5%5Cu4e2d%5Cu6587%5Cu8f6c%5Cu6362";
	String bbc=URLDecoder.decode(abc);
	System.out.println(bbc);
	
	String cbc= org.apache.commons.lang.StringEscapeUtils.unescapeJava(bbc);
	System.out.println(cbc);
 

你可能感兴趣的:(java,apache,jdk)