Как Java сопоставляет пути файловой системы с Unicode?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как Java сопоставляет пути файловой системы с Unicode?

Сообщение Anonymous »

В Rust пути к файлам ОС хранятся с использованием определенного типа Path вместо str. Это связано с тем, что str представляет собой последовательность байтов UTF-8, в то время как ядра либо не применяют какой-либо кодировки (Unix), пока косая черта представлена ​​кодовой точкой ASCII, либо кодируются в 16-битном формате. кодировка (Windows).
В Java пути представлены с использованием типа String в стандартной библиотеке, которая внутри использует UCS-2. Это не зависит от реализации, поскольку некоторые методы String так или иначе «утекают» из этой кодировки.
Как Java удается представлять произвольные пути последовательности байтов Unix как Unicode? Я предполагаю, что он рассматривает пути как ASCII или UTF-8, чтобы сопоставить «необработанные» байты с кодовыми точками Unicode, поскольку на практике пути почти всегда представляют собой ASCII или UTF-8, но что, если есть недопустимая последовательность байтов? ASCII или UTF-8? Является ли преобразование в Unicode/UCS-2 без потерь? Существует ли документированный алгоритм движения вперед и назад? Что мне следует учитывать при работе с путями к файлам в Java, если я не хочу исключать пользователей, не использующих латинский алфавит?
Пример
  • Перейдите в пустой каталог
  • Введите touch $(echo -e "\xc3\x28"). Это создаст совершенно правильный файл с именем, которое не может быть представлено в Юникоде.
  • Откройте jshell
  • Введите новый файл(" .".listFiles()[0].isFile()

    Это возвращает false
  • Если вы посмотрите на путь к указанному файлу, он содержит код U+FFFD, за которым следует \x28, что означает, что \xC3 был преобразован с потерями в Unicode и не представляет фактический путь. больше


Подробнее здесь: https://stackoverflow.com/questions/783 ... to-unicode
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»