答案 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
。
Swift 5.x虽然是抽象的,但默认情况下内部以UTF-8编码形式存储字符串。可以在严格的O(1)时间内访问它们,因此您可以使用基于UTF-8的函数而无需牺牲性能。
Swift中的“ Unicode”涵盖了Unicode标准中定义的“所有”字符,不仅限于BMP。
String
,Character
及其所有派生视图类型,例如UTF8View
,UTF16View
,UnicodeScalarView
均符合BidirectionalCollection
协议,因此您可以在所有受支持的细分级别中双向迭代组件。它们都共享相同的索引类型,因此,如果它们指向正确的Grapheme Cluster边界,则可以从一个视图获得的索引可以在另一视图上使用。
答案 5 :(得分:1)
答案 6 :(得分:0)
答案 7 :(得分:0)
DigitalMars D的数据类型dstring使用UTF32代码点,对于大多数情况应该足够了。