时间:2010-07-24 13:36:48

标签: string language-agnostic unicode programming-languages encoding

8 个答案:

答案 0 :(得分:9)

答案 1 :(得分:7)

答案 2 :(得分:5)

答案 3 :(得分:4)

看起来Perl 6获得了良好的Unicode支持:

perlgeek.de/en/article/5-to-6#post_17

例如,它为您提供了三种不同长度的方法:

  • 字节(字节数)
  • 代码(代码点数量)
  • 图表(字素数量)

这也被集成到Perl的正则表达式中。

看起来向我走向了正确的方向。

答案 4 :(得分:2)

以为这是10年前的问题了,...

是的。斯威夫特做到了。

  • 基本字符串类型String在Unicode“ Grapheme Cluster”级别执行所有字符处理。因此,您必须在“人类感知的字符”级别以“ Unicode正确”的方式执行每个文本更改操作。

  • String类型是抽象数据类型,并且不公开其内部表示形式,但是它具有用于访问所有UTF-8,UTF-16,UTF的Unicode标量值和Unicode代码单元的接口。 -32编码。

  • 它还存储面包屑,以在摊销的O(1)时间内提供UTF-8和UTF-16之间的偏移量转换。

  • Character类型还可以分解为Unicode标量值。

  • Character类型具有多种基于Unicode语义的字符分类方法。例如,对于在Unicode标准中定义的所有换行字符串,包括LF,VT,FF,CR,CR-LF,NEL等,Character.isNewline返回true

    < / li>
  • Swift 5.x虽然是抽象的,但默认情况下内部以UTF-8编码形式存储字符串。可以在严格的O(1)时间内访问它们,因此您可以使用基于UTF-8的函数而无需牺牲性能。

  • Swift中的“ Unicode”涵盖了Unicode标准中定义的“所有”字符,不仅限于BMP。

  • StringCharacter及其所有派生视图类型,例如UTF8ViewUTF16ViewUnicodeScalarView均符合BidirectionalCollection协议,因此您可以在所有受支持的细分级别中双向迭代组件。它们都共享相同的索引类型,因此,如果它们指向正确的Grapheme Cluster边界,则可以从一个视图获得的索引可以在另一视图上使用。

答案 5 :(得分:1)

答案 6 :(得分:0)

答案 7 :(得分:0)

DigitalMars D的数据类型dstring使用UTF32代码点,对于大多数情况应该足够了。