您的位置:首页 > 理论基础 > 计算机网络

访问带有中文路径的网络资源无法访问时需要转换编码

2013-09-12 15:37 621 查看
我们在浏览器访问网络资源时url路径默认是utf-8编码,但有时候我们的路径中带有中文,这时候我们直接在浏览器中键入中文路径是无效的。这个时候我们就需要将路径转换为gb2312的编码。比如我要访问“你好.txt”文件,直接在url敲入http://192.168.1.153:8080/math/resources/你好.txt

则出去的浏览器自动将这个url格式转换为(utf-8):/math/resources/%E4%BD%A0%E5%A5%BD.txt
    

此时需要我们手动转换成gb2312编码的url即OK

http://192.168.1.200:8080/MathGenius/resources/%c4%e3%ba%c3.txt
服务端接收时也是以gb2312的编码格式接受,然后反转回来就好。

以下是将url转成gb2312的编码代码:

public static String encodeUrlToGB2312(String url)
throws UnsupportedEncodingException {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < url.length(); i++) {
String s = url.substring(i, i + 1);
byte[] bytes = s.getBytes("gb2312");
if (bytes.length == 1) { // 如果为一个字节则直接加入StringBuffer(中文至少为两个字节,一个字节不可能为中文)
if (bytes[0] == ' ')
sb.append("%20");
else
sb.append(s);
} else {
for (int j = 0; j < bytes.length; j++) {
sb.append("%" + toHexString(bytes[j]));
}
}
}
return sb.toString();
}
其中"20%"是“ ”空格。按此方法可轻松解决url路径中包含中文不兼容问题。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐