java对URL中文字符的处理,编码以及解码

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;
}
}


以上代码仅供参考哦。



如果您觉得本文章对您有用,也为了更好的运营博客,您可以点击这里捐助

评论 抢沙发

昵称 (必填) 邮箱 (必填)
表情