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/天,具体规则查看活动详情