各种编程语言中的Unicode支持

bau*_*ack 31 unicode programming-languages

我想有一个规范的地方来汇集有关各种语言的Unicode支持的信息.它是核心语言的一部分吗?它是在图书馆提供的吗?它根本不可用吗?是否有一种资源流行的语言中的Unicode信息资源?请回答一种语言.此外,如果您可以使语言成为更容易找到的标题.

Chr*_*utz 11

Perl的

Perl主要具有内置的Unicode支持.有点.来自perldoc:

  • perlunitut - 在Perl中使用Unicode的教程.在绝对意义上教授你应该和不应该做什么到Unicode.涵盖基础知识.
  • perlunifaq - 关于Perl中Unicode的常见问题.
  • perluniintro - Perl中的Unicode简介.比" perlunitut "更少"说教" .
  • perlunicode - 当你必须知道所有关于Unicode和Perl的知识时.

  • 我已将大部分信息提炼到《有效 Perl 编程》中的 Unicode 章节中。理解分散的文档并不是那么有趣。 (2认同)

Shi*_*rin 8

Python 3k

Python 3k(或3.0或3000)具有处理文本(unicode)和数据的新方法:
Text Vs. 数据而不是Unicode Vs. 8位.另请参见Unicode HOWTO.


Joe*_*oey 7

Java的

与.NET相同,Java在内部使用UTF-16:java.lang.String

String表示在其中UTF-16格式的字符串增补字符由表示替代双(见节的Unicode字符表示Character类的更多信息).索引值是指char代码单元,因此补充字符在a中使用两个位置String.


小智 7

HQ9 +

在大多数实现中,Q命令具有完整的Unicode支持.


Mar*_*usJ 6

Rust 的字符串 (std::String&str) 始终是有效的 UTF-8,并且不使用 null 终止符,因此不能像在 C/C++ 等中那样作为数组进行索引。它们可以像 Go 一样使用切片.get从 1.20 开始,需要注意的是,如果尝试对代码点的中间进行切片,则会失败。

Rust 还具有OsStr/OsString用于与主机操作系统交互。它是 Unix 上的字节数组(包含任何字节序列)。在 Windows 上,它是 WTF-8(UTF-8 的超集,用于处理 Windows 和 Javascript 中允许的格式不正确的 Unicode 字符串),&str并且String可以自由转换为OsStrOsString,但需要检查以隐藏其他方式。要么因无效的 unicode 而失败,要么用 Unicode 替换字符替换。(还有Path/ ,它只是/ 的PathBuf包装)。OsStrOsString

还有CStrCString类型,它们表示以 Null 结尾的 C 字符串,就像OsStr在 Unix 上一样,它们可以包含任意字节。

Rust 不直接支持 UTF-16。但可以在 Windows 上转换OsStr为 UCS-2。


bau*_*ack 5

Python

Python 2 有类strunicode. str对象存储字节,unicode对象存储UTF-16字符。大多数库函数都支持两者(例如os.listdir('.')返回列表stros.listdir(u'.')返回对象列表unicode)。两者都有encodedecode方法。

Python 3 基本上重命名unicodestr. Python 3 相当于str类型bytesbytes有一个decodestr一个encode方法。由于 Python 3.3 str对象内部使用多种编码之一以节省内存。对于 Python 程序员来说,它看起来仍然像一个抽象的 unicode 序列。

Python 支持:

  • 编码/解码
  • 正常化
  • 简单的大小写转换和空格分割
  • 按名字查找角色

Python 不支持/支持有限:

  • 整理(有限)
  • 小写和大写字符之间没有 1:1 映射的特殊情况转换
  • 正则表达式(已处理
  • 文本分割
  • 双向文本处理

另请参阅:Python 中 Unicode 的真相


Roh*_*hit 5

Google 的Go 编程语言支持 Unicode 并使用 UTF-8。