首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可用于自定义文本处理的Unicode范围

可用于自定义文本处理的Unicode范围
EN

Stack Overflow用户
提问于 2016-09-04 22:42:48
回答 1查看 261关注 0票数 1

我正在研制一个处理器,它将文本分割成带有标记的块:

代码语言:javascript
复制
LOREM IPSUM SED AMED

将被解析为:

代码语言:javascript
复制
{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}“等,因为它会导致处理器崩溃,因为它又是一个字符串.我需要这样的标记:

代码语言:javascript
复制
\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
  • 首先\E 002表示元素类型编号,其最后一个位表示元素的关闭。所以元素数会随+2增加。
  • 第二个\0001表示用于堆叠的元素索引。
  • 我只是在这个例子中被使用\E 002。

但\0001也在Unicode范围内使用,这使我重新开始.

那么我可以使用哪个unicode范围呢?\ff0000?或者我怎么解决这个问题?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-04 23:12:05

Unicode联盟想到了这一点。有一系列Unicode代码点,它们的意思是永远不能表示可显示的字符,而是元代码:

非字符是永久保留的代码点,永远不会给它们分配字符。 ..。 标记字符旨在支持在没有其他机制(如标记语言)的情况下对文本流进行内部标记的通用方案。反对使用标记字符进行语言标记。 (http://www.unicode.org/versions/Unicode9.0.0/ch23.pdf)

您应该能够使用常规控制字符作为“私有”标记,因为这些字符不应该出现在正确的字符串中。这将是从U+0000U+001F的范围,不包括选项卡(U+0009)、常见的“返回”(U+000AU+000D),以及为了安全起见,U+0000本身(一些库不喜欢字符串中间的空字符)。

Non-characters 非字符是在Unicode标准中永久保留的用于内部使用的代码点。不建议在开放的Unicode文本数据交换中使用它们。

您可以使用U+FEFF (目前正式定义为非-A-字符)或U+FFFEU+FFFF。还有几个“正式的非a-字符”定义,您可以相当肯定它们不会出现在常规的文本字符串中。

有几个具有预定义定义的随机序列,并且非常不可能出现在纯文本字符串中,如下所示:

特产:U+FFF0-U+FFF8 8 范围U+FFF0..U+FFF8中的9个未分配的Unicode代码点保留给特殊字符定义。 注释字符:U+FFF9-U+FFFB 线性注释由与注释字符序列相关的注释文本组成。对于所有常规编辑和文本处理算法,注释字符被视为文本流的一部分。注释文本也是内容的一部分,但是对于所有或部分文本处理,它并不构成主文本流的一部分。 标签字符:U+E0000-U+E007F 此块编码一组95个特殊使用的标记字符,以便使用可以与Unicode中的普通文本内容字符严格分离的字符拼写出ASCIIbased字符串标记。 (上述一章的所有引文)

在约定范围内,还可以使用U+2028 (行分隔符)和/或U+2029段落分隔符。

从技术上讲,您对U+E000-U+F8FF(“私有使用区域”)的使用是可以的,因为这些代码点只能结合特定的字体定义一个明确的字符。但是,如果您从包含字体的源获取纯文本,则可能会弹出这些代码。

至于如何将其编码到字符串中,这并不重要,紧跟在私有标记标记后面的数字代码是否是有效的Unicode字符并不重要。如果您看到一个您自己的标记标记,那么紧跟在后面的值总是您自己的私有序列号。

正如你所看到的,有很多可能性。我想最重要的标准是您是否想在这些字符串上使用其他函数。如果您创建的字符串在技术上是无效的Unicode (例如,因为它包含非a-字符值),一些外部函数可能会选择不对它们工作,或者悄悄地删除坏值。在这种情况下,您需要严格遵守只使用“有效”代码点的系统。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39322113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档