1

Как мы знаем, файловые системы в стиле Linux и Unix хранят имя файла в виде байтового потока, в отличие от потоков Unicode в Windows NTFS/FAT.

Так что есть вопрос. Если я получу старый жесткий диск (примерно с 2002 года) с именами не-ASCII, закодированными как "gbk" на его разделах Ext3, и я хочу подключить этот старый диск к моему современному Linux (имена файлов в кодировке utf8), чтобы я мог скопировать старые файлы, сохраняя значение имени файла .

Тогда какая лучшая практика для этого?

Объяснения с точки зрения программистов особенно приветствуются.

1 ответ1

3

Нет. Большинство программ Linux не заботятся о границах диска или точки монтирования и используют одинаковую кодировку для всех имен файлов везде.

Тем не менее, большинство утилит по- прежнему обрабатывают имена файлов как байтовые строки, поэтому не должно быть проблем с копированием или использованием файлов, названных в странных кодировках. (Например, я переименовал несколько своих файлов в ISO-8859-13, и я все еще могу открыть их в программах командной строки или GNOME, хотя у KDE есть проблемы.)

Вы можете использовать такие инструменты, как convmv чтобы переименовать все файлы в имена UTF-8 - либо в вашей копии, либо непосредственно на исходном диске:

convmv -f gbk -t utf-8 -r /mnt/old-disk

(В Linux можно создавать оверлейные файловые системы, используя FUSE, который может представлять файлы по заданному пути, используя другую кодировку имен. Я не знаю, существует ли такая файловая система. bindfs аналогичная цель, но она переводит только владение / разрешения файлов. В любом случае, я придерживаюсь своей рекомендации просто конвертировать все имена в UTF-8.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .