【问题标题】:Possible to repair garbled Chinese filenames?可以修复乱码的中文文件名吗?
【发布时间】:2010-03-23 09:39:42
【问题描述】:

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

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

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

上面的方法行得通吗?

【问题讨论】:

  • 我可以,但它们看起来像典型的垃圾字符串。例如./202.177.28.66/org/uoind/?C?ӹΫ? (发布原始字节序列会有帮助吗?我怀疑字符串本身是否会保留所有信息。)
  • 如果能贴出原始字节序列就更好了。

标签: utf-8 ftp iconv filezilla big5


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多