我知道UTF-8编码的字符串不应该在unicode标量(代码点)的多字节表示中被分割。同样适用于UTF-16。
在更高的层次上,unicode字符串是一系列代码点(unicode标量),代码点的集群可以用来形成复杂的图形符号,例如,代码点स和्形成了图形素स्。因此,字符串不应该在这样一个集群的中间被分割。类似地,标志是使用区域指示符号序列表示的,因此应该小心不要在序列中间分割字符串。
另外,还有从左到右(LTR)和从右到左(RTL)代码点,它们对双向文本很有用。我假设当包含双向文本的unicode字符串被分成两部分时,我们需要在第二部分中插入额外的LTR或RTL代码点,以保持原来的方向性,对吗?
也许,如果原始字符串包含一个Byte-Order-Mark (BOM)代码点,那么它也应该添加到第二部分,对吗?
在分割Unicode字符串时,还需要注意其他事情吗?我试图评估各种编程语言对Unicode的支持程度。
编辑:阿德里亚诺·雷佩蒂下面的评论指向Unicode标准附件29,它详细回答了这个问题(谢谢!)。
发布于 2020-05-07 08:35:46
以下是阿德里亚诺·雷佩蒂的评论:
我已经在几个地方写过了,那么让我简单地说一句:即使您将自己限制在拆分代码单元(然后我不会考虑破坏编码、代理&类似地,让我们把代码点放在游戏之外)也有关于字符串可以在哪里被破坏的规则。见https://unicode.org/reports/tr29/。附带注意:我不希望看到任何字符串中的BOM (只有在存储中处理它的字节表示时,它才是关于编码的)--阿德里亚诺·雷佩蒂
https://stackoverflow.com/questions/61652888
复制相似问题