java 中文汉字 编码问题

来源:百度知道 编辑:UC知道 时间:2024/09/23 01:41:28
最近在用Java在Netbean环境下开发Java SE桌面应用FTP客户端程序。我得到这样一个FTP文件下载地址:ftp://202.202.240.248/Public2/%C9%B1%B6%BE/NOD32.3.0.650.nt32.cn.rar该URL用GBK解码后为:ftp://202.202.240.248/Public2/杀毒/NOD32.3.0.650.nt32.cn.rar但用wireshark抓包后发现客户端向服务器发送的retrieveFile字符串却为:/Public2/\311\261\266\276/NOD32.3.0.650.nt32.cn.rar。不知道其中采用的哪种编码方式和流程???请各位高手给点拨一下,谢谢了!!!
一楼的高手:即使采用GBK编码,问题还是没有解决,不过还是谢了哈。

public static void main(String[] args) {
String s = "Public2/\311\261\266\276/NOD32.3.0.650.nt32.cn.rar";
String e = "";
try {
e = new String(s.getBytes("iso-8859-1"), "gbk");
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(Test4.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.print(e);
}

其中的\311\261\266\267是8进制的表示方法。如0311 = 0xC9
实际发送的数据就是采用的GBK编码,或者说是ANSI编码也可以。

FTP和HTTP是不同的协议,写成ftp://只是为了在IE里能够识别FTP而已,URL和实际的协议传输内容是没有直接关系的。
比如:Ftp 需要先连接服务器,然后执行user password命令登陆,然后才是get file 的命令,是不支持任何编码转换格式的。

iso-8859-1

这些都是汉字 杀毒 的 机内码
杀 0xC9B1
毒 0xB6BE

%C9%B1%B6%BE 是把机内码按字节分开了,加了个%
\311\261\266\276 是八进制表示的.