2015-03-13 3 views
1

У меня возникла ситуация, когда NAS, подключенный к Linux, содержит имена файлов, которые имеют скандинавские символы, такие как ä, ö, å. Когда я перечисляю файлы с ls, я вижу все эти символы как вопросительные знаки (?). Если я запустил ls -b, я увижу кодированную версию имени файла. Подобные персонажи: \ 303 \ 205Невозможно прочитать специальные символы из имени файла

Мне нужно прочитать те файлы и их имена из моего кода Java, но я не могу. Если я использую File.listFiles для списка файлов, я получаю вопросительные знаки вместо правильных символов. Если я конвертирую файл в путь, я получаю исключение: java.nio.file.InvalidPathException: неверный ввод или ввод содержит несменяемые символы
Я могу избавиться от исключения, если установить Dsun.jnu.encoding = UTF-8 при запуске, но опять же я получаю вопросительные знаки вместо ä, ö или å.

Я попытался установить NAS с настройками, такими как check = relaxed, но не удача там.

Вся помощь приветствуется.

+0

Можете ли вы напечатать * числовые * значки символов для имени файла, которое вы получаете без исключения, используя Dsun.jnu.encoding = UTF -8 и добавить это к вашему вопросу вместе с правильным именем файла? – laune

+0

Это уже плохо, если «ls» неправильно отображает имена файлов. Вы настроили кодировку (по умолчанию для системы) на UTF-8? Если нет, java не может этого сделать. (Я предполагаю, что NAS использует UTF-8, иначе он будет более сложным). – Bram

+0

Если я вхожу на сервер с Mac Cyberduck и перехожу на монтирование, я могу видеть правильные символы ... – tomtom

ответ

0

Хорошо, решил этот. Если я подключусь к Linux на сервер, который я использую для запуска кода, он НЕ установлен LC_CTYPE, НО, если я вхожу в систему с моим MAC, он устанавливает его UTF-8. Так как приложение работает на сервере, зависит от клиента SSH, который я использую для его запуска.

Смежные вопросы