Не удается прочитать специальные символы из имени файла

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 и добавить это к вашему вопросу вместе с правильным именем файла?
  • 0
    Это уже плохо, если "ls" неправильно показывает имена файлов. Вы установили (код по умолчанию) кодировку UTF-8? Если нет, то Java не может с этим поделать. (Я предполагаю, что NAS использует UTF-8, иначе это будет сложнее).
Показать ещё 8 комментариев
Теги:
encoding

1 ответ

0
Лучший ответ

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню