Как я читаю строки Unicode-16 из файла с помощью методов POSIX в Linux?

После дальнейших исследований я обнаружил, что мне действительно нужна графическая база данных, и та, которая выделяется как наиболее используемая и с лучшей поддержкой и интеграцией, - это Neo4j ( https://neo4j.com ) с интерфейсом в React, возможно, так как они предлагают официальный драйвер для JavaScript.

5
задан Harvey 10 August 2009 в 15:09
поделиться

4 ответа

(Windows всегда использует UTF-16? например, в японских версиях)

Да, WCHAR NT всегда является UTF-16LE.

(‘Системная кодовая страница’, которая для японских установок является действительно cp932/Shift-JIS, все еще существует в NT в пользу многих, много приложений, которые не являются собственными Unicode, пути FAT32, и так далее.)

Однако wchar_t, как гарантируют, не составит 16 битов, и на Linux это не будет, UTF-32 (UCS-4) используется. Таким образом, wcstombs_l вряд ли будет счастлив.

Правильная Вещь состояла бы в том, чтобы пользоваться библиотекой как iconv для чтения его в в то, какой бы ни формат Вы используете внутренне - по-видимому, wchar_t. Вы могли попытаться взломать его сами путем сования байтов, но Вы, вероятно, получите вещи как Суррогаты неправильно.

Runing "локаль-a" на моих актуальных машинах Ubuntu и Mac OS X приводит к нулевым локалям с utf-16 на их имена.

Действительно, Linux не может использовать UTF-16 в качестве кодировки по умолчанию локали благодаря всему \0s.

4
ответ дан 18 December 2019 в 14:52
поделиться

Самым простым путем является преобразование файл от utf16 до utf8 собственного кодирования UNIX, и затем считайте его,

iconv -f utf16 -t utf8 file_in.txt -o file_out.txt

Можно также использовать iconv (3) (см. человека 3 iconv) преобразовать строку с помощью C. Большинство других языков имеет привязку к iconv также.

Чем Вы может использовать любую локаль UTF-8 как en_US.UTF-8, которые обычно являются по умолчанию на большинстве дистрибутивов Linux.

6
ответ дан 18 December 2019 в 14:52
поделиться

Я настоятельно рекомендовал бы использовать Unicode, кодирующий внутренним представлением Вашей программы. Используйте или UTF-16 или UTF-8. Если Вы используете UTF-16 внутренне, то, очевидно, никакой перевод не требуется. При использовании UTF-8 можно использовать локаль с .UTF-8 в нем такой как en_US.UTF-8.

1
ответ дан 18 December 2019 в 14:52
поделиться

Можно читать как двоичный файл, затем сделать собственное быстрое преобразование: http://unicode.org/faq/utf_bom.html#utf16-3, Но, вероятно, более безопасно пользоваться библиотекой (как libiconv), который обрабатывает недопустимые последовательности правильно.

2
ответ дан 18 December 2019 в 14:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: