Возможно ли восстановить искаженные китайские имена файлов? - PullRequest
1 голос
/ 23 марта 2010

Я загружаю через FTP некоторые файлы с китайскими именами (в кодировке BIG5), и Filezilla отображает эти имена файлов как мусор (поскольку FTP не может обрабатывать любые кодировки, кроме ASCII и UTF-8, как минимум стандартных, совместимых).

Учитывая имя файла с искаженными символами, могу ли я восстановить кодировку и получить правильное имя файла String, если я уже знаю исходную кодировку?Будет ли FTP-клиент неверно истолковывать BIG5 как UTF-8, вставляя байты, которые затрудняют преобразование обратно в BIG5?

Мои предлагаемые действия (в Java): 1. получить искаженное имя файла, используя объект File.2. getbytes используя UTF-8.3. создать новую строку, используя эти байты в BIG5.4. Запишите декодированное имя файла обратно в файл.

Будет ли работать вышеуказанный метод?

1 Ответ

2 голосов
/ 23 марта 2010

Не каждая последовательность байтов является допустимой строкой ASCII или UTF-8, поэтому вполне вероятно, что некоторые байты будут отброшены, преобразованы в символ замены или иным образом необратимо повреждены.Таким образом, похоже, что вы не сможете получить исходные имена файлов, если они были изменены FileZilla, чтобы стать правильно сформированными UTF-8 или ASCII.

Возможно, вам повезет, если вы сможете вернуть определенный процент от оригинальных персонажей, где они просто оказались действительными BIG5 и действительными UTF-8, но я сомневаюсь, что вы сможете восстановить всеfilename.

Вы можете опубликовать несколько примеров искаженных имен файлов (в виде необработанных байтов, закодированных в шестнадцатеричном формате), чтобы получить более определенный ответ.Таким образом, мы можем точно определить, какой урон.

...