你的语言在实践中对unicode的支持有多好?

2024-10-03 00:21:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找新的语言,有点渴望一种不再需要担心字符集问题的语言,因为我在新项目中对PHP有太多的麻烦。在

我倾向于觉得Java过于冗长和混乱,而且我不想用6英尺长的杆子触碰窗户,这就排除了.Net的可能性。这基本上除了PHP、C和C++之外,其他所有东西(除了我知道的,其中的两个与Unicode的东西不一样,不管ICU库)。在

到目前为止,我已经列出了一些语言,即Ruby(喜欢mixin)、Python、Lisp和Javascript(节点.js). 但是,我会带着高度inconsistentinformationonunicodesupport我害怕(没有时间……)去学习每一个,直到我可以安全地打破它来排除它。在

据我所知,python3似乎拥有它。Ruby1.9也是如此。Lispnot necessarily。大概是Javascript吧。在

可以说,对一种语言的支持不仅仅是unicode,但根据我的经验,在处理语言环境时,它往往会成为一个主要的缺点。在

我也意识到这个问题有点主观。(请不要因为这个理由而关闭它:我实际上链接了几个我觉得不满意的SO线程。)但是。。。作为这些语言的用户,它们在实践中对unicode的支持程度如何?在


Tags: 项目语言netunicodejavajavascript可能性php
3条回答

Perl非常支持unicode。您需要知道如何正确地使用is,但是我从来没有找到比perl更好地支持unicode的语言,尤其是现在perl5.14。在

Racket(在Lisp/Scheme阵营中)有很好的Unicode支持。Racket区分字符串(写入"abc")和字节串(写入#"abc")。字符串由Unicode字符组成,并且具有所有可以识别Unicode的字符串操作(比较、大小写折叠等)。默认情况下,Racket使用UTF-8作为字符串I/O(包括源文件的编码),但它也支持与其他编码的转换。GUI工具包使用Unicode。正则表达式也是。在

Python对unicode的支持在3.x中并没有真正改变,自从python2.x引入了单独的unicode类型和编码处理之后,Python中的unicode支持几乎是一样的。python3.x所做的改变是unicode成为唯一的字符串类型(并被重命名为str),而2.x有bytestrings(str"...")和unicode字符串(unicodeu"...")经常但并不总是完全混合在一起。(允许它们混合使用是为了使从bytestrings到unicode的转换更容易,但结果却是一个错误。)总而言之,Python的unicode支持非常好,尽管python2.x中存在错误。有带数字和命名转义符的unicode文本、unicode文本中非ASCII字符的源代码声明、通过codecs模块自动编码/解码、许多库(如正则表达式和DB-API模块)中的unicode支持以及内置unicode数据库。在

也就是说,为了正确地处理文本,您仍然需要了解编码。您的程序将以某种编码方式接收字节(无论是从文件、环境变量还是通过其他输入),它们将需要以该编码进行解释。如果您不知道编码(也不能从数据中确定编码,比如在HTML或XML中),那么您实际上只能将数据作为字节来处理。如果您知道编码,Python确实允许您透明地处理它。在

相关问题 更多 >