java编码遇到的问题
在实际的项目中,由于有需求需要将string转换成UTF-8编码,之后再进行转码,在编码以及转码的时候出现了一些小问题,以此记录下
编码
在Java中使用URLEncoder.encode(String s, String enc);来进行编码。第一个代码你需要编码的字符串,第二个为你需要编码的类型。
比如可以这么使用:
String string ="无聊撸代码";
URLEncoder.encode(string , "UTF-8");
字符串为string ,编码的格式为:utf-8。
编码之后的是这样的
%E6%97%A0%E8%81%8A%E6%92%B8%E4%BB%A3%E7%A0%81
解码
在解码的时候用URLDecoder.decode(String s, String enc);参数的意思和编码是一致的。
比如可以这么使用:
URLDecoder.decode(string , "UTF-8");
将需要解码的字符串传入就可以了
编码时+变成空格
有时候bug总是无处不在,在编码的时候,当输入+时,在解码的时候,会变成空格。
解决方法
String sendBuf = str.replace("+", "%2B");
URLEncoder.encode(sendBuf, "UTF-8");
将其中的+号转换成%2B,因为+编码就是%2B
解码时遇到%报异常
当解码的时候,有单独的%就会报异常,看下图
主要原因是% 在URL中是特殊字符,需要特殊转义一下,可以做一下处理
String url = str.replaceAll("%(?![0-9a-fA-F]{2})", "%25");
URLDecoder.decode(url, "UTF-8");
str:为你的需要解码的字符串
编码的问题基本上就这些,后期有需要再增加新的内容,欢迎各位指出错误,共同进步!