Лучшая практика для замены неизвестных символов из неизвестных кодировок в именах файлов?

то есть. у меня есть файл с именем Porträt.pdf.

Но имя файла было создано с набором символов, который не отображается должным образом в Ubuntu, как в следующем примере.

enter image description here

Какова была бы наилучшая практика для переименования таких символов в именах файлов, когда у вас есть несколько имен файлов и вы не можете использовать этот специальный символ из-за его кодирования в командах терминала?

6
задан 11 February 2011 в 17:29

3 ответа

Теоретически может быть сложно узнать кодировку символов, используемую файлами, но в большинстве случаев ошибка происходит из-за систем и программ Windows, которые все еще используют только Latin1 вместо UTF-8. Запустите convmv -f cp850 -t utf-8 * без кавычек в папке с испорченными файлами и попробуйте.

(необходим пакет convmv)

0
ответ дан 11 February 2011 в 17:29

Если вы просто хотите избавиться от некоторых символов, вы можете попробовать это:

rename "s/[^A-Za-z0-9-_]/_/g"

Это заменит каждый символ, который не является просто символом, числом или тире, с подчеркиванием. Запустите с опцией -n, чтобы увидеть, что происходит в пробном режиме.

0
ответ дан 11 February 2011 в 17:29

Я полагаю, что современные ОС часто выбирают UTF-8 для кодирования имен файлов. В этом смысле это не проблема иметь неамериканские символы в именах файлов. То, что вы испытали, вероятно, является результатом имени файла, созданного с кодировкой не-UTF-8. Сложно сказать, что вы можете с этим сделать, это также зависит от того, что вы хотите. Если вам нужно правильное имя файла (например, «Porträt.pdf»), вам необходимо сначала узнать кодировку исходного имени файла, а затем преобразовать его / их. Это не так просто «угадать» только потому, что существует огромное количество очень разных кодировок.

0
ответ дан 11 February 2011 в 17:29

Другие вопросы по тегам:

Похожие вопросы: