1

我正在通过 FTP 下载一些带有中文名称(BIG5 编码)的文件,而 Filezilla 将这些文件名显示为垃圾(因为 FTP 无法处理除 ASCII 和 UTF-8 之外的任何编码,至少符合标准的编码)。

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

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

上述方法行得通吗?

4

1 回答 1

2

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

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

您可以发布一些乱码文件名的示例(以十六进制编码的原始字节)以获得更明确的答案。这样我们就可以确切地看到损坏是什么。

于 2010-03-23T09:42:54.207 回答