Возможно ли восстановить искаженные китайские имена файлов?

StackOverflow https://stackoverflow.com/questions/2498790

Вопрос

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

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

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

Сработает ли описанный выше метод?

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top