2016-09-04 3 views
1

Я работаю на процессоре, что части текста в блоки с отметками:Используемые Unicode диапазоны для пользовательского процесса Текст

LOREM IPSUM SED AMED 

будет анализироваться как:

{word:1}LOREM{/word:1}{space:2} 
{word:3}IPSUM{/word:3}{space:4} 
{word:5}SED{/word:5}{space:6} 
{word:7}AMED{/word:7} 

Но я не хочу использовать " {word} "и т. д., потому что это приводит к отказу процессора, потому что это строка снова ... Мне нужно отметить следующее:

\E002\0001 LOREM \E003\0001 \E004\0002 
\E002\0003 IPSUM \E003\0004 \E004\0005 
\E002\0006 SED \E003\0006 \E004\0007 
\E002\0008 AMED \E003\0008 
  • Первый символ \ E002 означает номер элемента элемента, его последний бит представляет собой элемент. Таким образом, число элементов увеличивается с +2.
  • Второй \ 0001 означает индекс элемента для укладки.
  • Я просто использую \ E002 нерелевантно для этого примера.

Но \ 0001 также с использованием в диапазоне Unicode, и это приводит меня туда, где я начинаю снова ...

Так какой юникода диапазон можно использовать? \ Ff0000? или как я могу это решить?

Спасибо!

ответ

1

Консорциум Unicode думал об этом. Существует целый ряд кодовых точек Unicode, которые предназначены для никогда представляет отображаемый характер, но мета-коды вместо:

Noncharacters являются кодовыми точками, которые постоянно защищены и никогда не будет иметь символов , возложенные на них.
...
Тег-теги предназначены для поддержки общей схемы внутренней маркировки текстовых потоков в отсутствие других механизмов, таких как языки разметки. Использование тегов символов для отметки языка устарело.
(http://www.unicode.org/versions/Unicode9.0.0/ch23.pdf)

Вы должны быть в состоянии использовать регулярные контрольные символы как «частные» тегов, потому что они никогда не должны происходить в соответствующих строках. Это будет диапазон от U+0000 до U+001F, за исключением вкладок (U+0009), общие «возвращает» (U+000A и U+000D), а для безопасности - U+0000 (некоторые библиотеки не любят нулевые символы в середине строк).

Noncharacters
Noncharacters являются кодовыми точками, которые постоянно сохраняется в стандарте Unicode для внутреннего использования. Они не рекомендуются для использования в открытом обмене текстовыми данными Юникода.

Вы можете использовать U+FEFF (который в настоящее время официально определено как Not-A-Character), или U+FFFE и U+FFFF. Существует еще несколько «официально не-символов», и вы можете быть уверены, что они не будут встречаться в обычных текстовых строках.

Несколько случайные последовательности с предопределенными определениями, и поэтому весьма маловероятны в виде текстовых строк являются:

Скидки: U + FFF0-U + FFF8
Девять нераспределенной кода Unicode точки в диапазон U + FFF0..U + FFF8 зарезервирован для определений специальных символов для .

Аннотация Символы: U + FFF9-U + FFFB
подстрочный аннотаций состоит из аннотирования текста, который связан с последовательностью аннотированных символов. Для всех обычных алгоритмов редактирования и обработки текста аннотированные символы рассматриваются как часть текстового потока. Аннотирующий текст также является частью содержимого, , но для всей или некоторой обработки текста он не является частью основного текстового потока.

Tag Характеры: U + E0000-U + E007F
Этот блок кодирует набор из 95 специального назначения символов тегов для того, чтобы правописание из ASCIIbased строковых тегов с помощью символов, которые могут быть строго отделена от обычного текста содержание символов в Юникоде.
(все цитаты из этой главы, как указано выше)


Оставаясь в рамках конвенций, вы можете также использовать U+2028 (строка разделитель) и/или U+2029 пункт разделитель.

Технически, ваше использование U+E000 - U+F8FF («Частная зона использования») нормально-иш, поскольку эти кодовые точки только могут определить однозначный характер в сочетании с определенным шрифтом. Тем не менее, возможно, эти коды могут появиться, если вы получите свой обычный текст из источника, в который включен шрифт :.

Как закодировать это в ваших строках: на самом деле не имеет значения, является ли числовой код, следующий за вашим личным маркером тега, действительным символом Unicode или нет. Если вы видите один из ваших собственных меток тегов, то следующее значение всегда является вашим собственным частным порядковым номером.

Как вы видите, есть много возможностей. Я думаю, что самым важным критерием является то, хотите ли вы использовать другие функции в этих строках. Если вы создаете строку, которая является технически недействительной Unicode (например, потому что она включает значения не-символа), некоторые внешние функции могут отказаться от их работы или тихо удалить плохие значения. В таком случае вам необходимо строго придерживаться системы, в которой вы используете только «действительные» кодовые точки.

+0

[\ 0091 \ D800] [\ 0092 \ D800 \ D800] (ТЕКСТ) [\ 0091 \ D801] [\ 0092 \ D800 \ D800] будет работать: 91 и 92 указывает личное использование, 8 байтов для типов элементов (Емкость элементов 4224 элементов) и 12 байтов для индекса стека (пропускная способность 4224 * 4224). Могу ли я спросить ваше мнение об этой настройке? Спасибо!! – Digerkam

Смежные вопросы