Возможно ли восстановить искаженные китайские имена файлов?
Вопрос
Я загружаю через 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, но я сомневаюсь, что вы сможете восстановить все имя файла целиком.
Вы могли бы опубликовать несколько примеров ваших искаженных имен файлов (в виде необработанных байт, закодированных в шестнадцатеричном формате), чтобы получить более определенный ответ.Таким образом, мы можем точно увидеть, в чем заключается ущерб.