Похоже, что имена этих файлов закодированы в UTF -8, ваш терминал использует UTF -8, но ваш язык — нет. locale charmap
, вероятно, выводит что-то вродеANSI_X3.4-1968
(aka ASCII ). ASCII не определяет символы с кодовой точкой выше 127. Не -ASCII UTF -8 символов закодированы в 2 или более байтах, каждый из которых больше 127.
ls
отображает эти байты как ?
, потому что они не формируют печатные символы в ASCII (текущей локали charmap ).
Вы хотите использовать локаль, в которой чармап UTF -8. В вашем списке доступных локалей, как сообщает locale -a
, остается только C.UTF-8
.
Выполнить:
export LANG=C.UTF-8
locale
Возможно, вам придется сбросить некоторые $LC_XXX
переменные, если они были установлены на что-то другое.
Обратите внимание, что продукты Microsoft могут не распознавать файлы UTF -8 как таковые, если только они не начинаются с символа ZERO WIDTH NO-BREAK SPACE
(, также используемого в качестве знака порядка байтов --в UTF -16, есть нет проблем с порядком байтов в UTF -8 ).
Вы можете добавить этот символ, а также преобразовать окончания строк в формат Microsoft с помощью:
unix2dos -m < file.csv > file.ms.csv