Каковы риски разделения строки Unicode? - PullRequest
2 голосов
/ 07 мая 2020

Я понимаю, что строку в кодировке UTF-8 не следует разделять в середине многобайтового представления скаляра Unicode (кодовой точки). Аналогично для UTF-16.

На более высоком уровне строка Unicode представляет собой последовательность кодовых точек (скаляры Unicode), и кластеры кодовых точек могут использоваться для формирования сложных графем, например кодовых точек и образуют графему स्. Таким образом, строку не следует разделять в середине такого кластера. Точно так же флаги представлены с использованием последовательности символов региональных индикаторов, поэтому следует соблюдать осторожность, чтобы не разбить строку в середине такой последовательности.

Кроме того, существуют символы слева направо (LTR) и кодовые точки справа налево (RTL), которые полезны для двунаправленного текста. Я полагаю, что когда строка Unicode, содержащая двунаправленный текст, разделяется на две части, нам нужно вставить дополнительные кодовые точки LTR или RTL во вторую часть, чтобы сохранить исходную направленность, верно?

И, возможно, если исходная строка содержит кодовую точку Byte-Order-Mark (BOM), ее также следует добавить во вторую часть, верно?

Есть другие вещи нужно быть осторожным при разделении строк Unicode? Я пытаюсь оценить, насколько хорошо различные языки программирования поддерживают Unicode.

Edit : комментарий Адриано Репетти ниже указывает на Приложение № 29 из стандарта Unicode , которое отвечает этот вопрос подробно (спасибо!).

1 Ответ

3 голосов
/ 07 мая 2020

Ниже был комментарий Адриано Репетти:

Я уже писал об этом в нескольких местах, тогда позвольте мне просто резюмировать: даже если вы ограничиваете себя разделением блоков кода (тогда я выиграл) t рассмотрите нарушенную кодировку, суррогаты и тому подобное, давайте оставим кодовые точки вне игры) существуют правила о том, где строка может быть нарушена. См. https://unicode.org/reports/tr29/. Боковое примечание: я бы не ожидал увидеть спецификацию в какой-либо строке (это касается только кодировки и только если вы имеете дело с ее байтовым представлением в хранилище) - Адриано Репетти

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...