Как Java обрабатывает данные, отличные от Юникода, в путяхJAVA

Программисты JAVA общаются здесь
Anonymous
Как Java обрабатывает данные, отличные от Юникода, в путях

Сообщение 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, если я не хочу исключать пользователей, не использующих латинский алфавит?

Подробнее здесь: https://stackoverflow.com/questions/783 ... a-in-paths

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