gpt4 book ai didi

string - 是否有完全正确的 Unicode 支持的编程语言?

转载 作者:行者123 更新时间:2023-12-04 04:52:34 25 4
gpt4 key购买 nike

大多数编程语言都对 Unicode 有一定的支持,但都有一些或多或少记录在案的极端情况,在这些情况下,事情将无法正常工作。

示例

java :
StringBuilder/StringBuffer 中的 reverse() 工作正常。但是如果字符需要超过 16 位进行编码,则 String 中的 length()、charAt() 等不会。

C#:
没有找到正确的反向方法,长度和索引访问返回错误结果。

Perl:同样的问题。

PHP:
完全没有 Unicode 的概念,mbstring 有一些更好的替代品。

我想知道是否有一种编程语言,它具有完整且正确的 Unicode 支持?
为了达到这样的目的,必须做出哪些妥协?

  • 更复杂的算法?
  • 更高的内存消耗?
  • 性能变慢?

  • 它是如何在内部实现的?
  • 整数数组、链表等
  • 附加缓冲

  • 我看到 Python 3 在这方面有一些相当大的变化。 Python 3 现在离正确实现有多近?

    最佳答案

    Java 实现在不违反 Unicode 标准的意义上是正确的;没有规定字符串索引在代码点而不是代码单元上工作,并且记录了行为。只要不泄露无效字符串,Unicode 标准就为实现者在优化方面提供了很大的自由。至于“全力支持”,那就更难定义了。 Unicode 标准通常不要求将某些功能实现为与 Unicode 兼容;只有实现的功能是根据标准实现的。涉及脚本处理的很大一部分属于字体或操作系统,编程系统无法控制。如果您想判断某些技术对 Unicode 的支持,您可以从测试以下(主观的和非详尽的)主题列表开始:

  • 系统是否有使用 Unicode 编码的字符串数据类型?
  • 是否支持标准中描述的所有 Unicode (UTF) 编码?
  • 归一化
  • 双向算法
  • UpperCase("ß") = "SS" ?
  • 大写区域设置敏感吗? (例如,在土耳其语中,UpperCase("i") = "İ")
  • 是否有使用代码点而不是代码单元的函数?
  • Unicode 正则表达式
  • 在解码过程中遇到无效的代码单元序列时,系统是否会引发异常?
  • 访问 Unicode 数据库属性?

  • 我认为 Java 和 .NET 对这些问题的回答大多是"is",而 Python 3.x 的回答几乎总是“否”。

    关于string - 是否有完全正确的 Unicode 支持的编程语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3325303/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com