java对URL中文字符的处理,编码以及解码
很高兴!
今天是博客完成php转java后的第一篇文章
之前遇到很多bug都没有记录下来,现在也想不起来是如何处理的了
为了验证博客是否基本完善,今天就更新一篇文章试试吧
有时候,数据库中存入中文字符,我们习惯的会把中文字符进行编码
如 字符串 “sd测试以下” 进行url编码后的结构是
sd%E6%B5%8B%E8%AF%95%E4%BB%A5%E4%B8%8B
其实这用到了 java.net 包下的 URLDecoder 和 URLEncoder静态类
使用时我们需要导入这两个类即可
import java.net.URLDecoder; import java.net.URLEncoder;
以下代码示例是我项目中使用的一个工具类,大家可以参考下
isChinese(char c) 判断单个字符是否是汉字
isChinese(char[] c) 判断这个字符数组是否包含汉字
opChinese(String str) 将str中的汉字部分进行url编码,并且将这个编码转换为小写
deChinese(String str) 将编码后的字符串重新解码,如:将字符串 "sd%E6%B5%8B%E8%AF%95%E4%BB%A5%E4%B8%8B " 解码为 "sd测试以下"
public class Chinese { //判断这个字符是否是汉字,返回boolean public static boolean isChinese(char c) { boolean result = false; if (c >= 19968 && c <= 171941) {// 汉字范围 \u4e00-\u9fa5 (文) result = true; } return result; } //判断这个字符是否是汉字,返回boolean public static boolean isChinese(char[] c) { boolean result = false; for(char cc:c){ if (cc >= 19968 && cc <= 171941) {// 汉字范围 \u4e00-\u9fa5 (文) result = true; } } return result; } //判断是否汉字,有,就将汉字转换为小写 public static String opChinese(String str) { String restr=""; String encode = null; char[] charArray = str.toCharArray(); for(char c:charArray){ if (c >= 19968 && c <= 171941) {// 汉字范围 \u4e00-\u9fa5 (文) try { encode = URLEncoder.encode(String.valueOf(c),"UTF-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } String lowerCase = encode.toLowerCase(); restr=restr+lowerCase; }else{ restr=restr+c; } } return restr; } //将编码后的字符串重新解码 //sd%E6%B5%8B%E8%AF%95%E4%BB%A5%E4%B8%8B 解码为 sd测试以下 public static String deChinese(String str) { String decode = null; try { decode = URLDecoder.decode(str,"UTF-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return decode; } }
以上代码仅供参考哦。
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情