访问带有中文路径的网络资源无法访问时需要转换编码
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路径中包含中文不兼容问题。
则出去的浏览器自动将这个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路径中包含中文不兼容问题。
相关文章推荐
- tomcat 部署 路径带有空格无法访问到资源
- WORKGROUP无法访问。您可能没有权限使用网络资源。请与这台服务器的管理员联系以查明您是否有访问权限。找不到网络路径。”
- 网络无法访问,你可能没有权限使用网络资源,请与管理员联系,拒绝访问
- 计算机无法访问,您可能没有权限使用网络资源。
- [转] "计算机无法访问,您可能没有权限使用网络资源.请与这台服务器的管理员联系以查明您是否有访问权限" 解决方法
- 无法访问!你可能没有权限使用网络资源请与这台服。。。!
- 无法访问.您可能没有权限使用网络资源.局域网无法访问共享,局域网无法访问打印机的一些方法
- windows server 2012无法访问samba共享服务的排解思路 报错找不到网络路径
- "计算机无法访问,您可能没有权限使用网络资源.请与这台服务器的管理员联系"的解决办法
- GetFileAttributesEx获取无法访问到的网络路径上的文件信息,会等待很长时间。
- 计算机无法访问,您可能没有权限使用网络资源的解决方法
- “计算机无法访问,您可能没有权限使用网络资源”解决方法
- “无法找到网络路径”无法实现资源共享
- web项目改名字,无法访问,需要修改ContextPath路径
- Windows XP 共享 Workgroup无法访问.您可能没有权限使用网络资源
- 含有中文名称的图片资源无法访问
- 很经典的问题---在VC++ 2005中fstream对象无法访问中文路径下的文件,包括英文路径下的中文名文件。
- samba服务器无法访问 提示找不到网络路径
- 无法访问。您可能没有权限使用网络资源
- 解决:samba 无法访问,您可能没有权限使用网络资源,请与这台服务器管理员联系 指定的网络名不可用