2010-03-23 73 views
1

我通过FTP下载了一些中文名称的文件(BIG5编码),Filezilla将这些文件名显示为垃圾(因为除了ASCII和UTF-8以外,FTP不能处理任何编码,至少符合标准)。可能修复乱码的中文文件名吗?

给定一个带有乱码字符的文件名,是否可以修复编码并获得正确的文件名字符串,因为我已经知道源编码了? FTP客户端是否会错误地将BIG5解释为UTF-8插入字节,使转换回BIG5变得困难?

我建议的步骤(Java): 1.使用File对象获取乱码文件名。 2. getbytes使用UTF-8。 3.在BIG5中使用这些字节创建一个新字符串。 4.将解码后的文件名写回文件。

上述方法是否可行?

+0

你可以发表一些例子吗? – 2010-03-23 09:48:08

+0

我可以,但它们看起来像你典型的垃圾串。例如./202.177.28.66/org/uoind/?C?ӹΫ? (会发布一个原始字节序列的帮助吗?我怀疑字符串本身将完整的所有信息。) – futureelite7 2010-03-23 10:45:30

+0

如果你可以发布原始字节序列,它会更好。 – 2010-03-23 11:54:36

回答

2

并非每个字节序列都是一个有效的ASCII或UTF-8字符串,因此很可能某些字节已被丢弃,转换为replacement character或以其他方式不可逆转地发生了破坏。因此,如果FileZilla已将其修改为正确的UTF-8或ASCII文件,您将无法检索原始文件名。

你可能很幸运能够获得一定比例的原始字符,它们恰好是有效的BIG5和有效的UTF-8,但我怀疑你能够恢复整个文件名。

你可以发表你的乱码文件名的几个例子(以十六进制编码的原始字节)以得到更确定的答案。这样我们可以确切地看到损伤是什么。