您的语言在实践中如何支持unicode?

Den*_*rdy 7 ruby lisp python node.js

我正在寻找新的语言,对于我不再需要担心字符串问题,我在PHP中用于新项目的过多其他问题.

我倾向于发现Java太冗长和混乱,我不想用6英尺的杆子触摸Windows往往排除.Net.这基本上留下了其他所有东西 - 除了PHP,C和C++(我知道后两个与unicode的东西混乱,无论ICU库如何).

我简要列出了迄今为止的一些语言,即Ruby(喜欢mixins),Python,Lisp和Javascript(node.js).但是,我发现有关unicode 支持的高度不一致的 信息 ,我害怕(缺乏时间......)学习它们中的每一个,以至于我可以安全地破解它以排除它.

据我所知,Python 3 似乎拥有它.和Ruby 1.9一样.Lisp 不一定.大概是Javascript.

对于一种语言来说,可以说比unicode支持更多,但根据我的经验,它在处理语言环境时往往成为一个主要的缺点.

我也意识到这个问题有些主观.(请不要因为这个原因关闭它:我实际上是链接到我发现不满意的几个SO线程.)但是......作为这些语言的用户,它们在实践中如何支持unicode?

Tho*_*ers 7

Python的unicode支持在3.x中没有真正改变.自Python 2.x以来,Python中的unicode 支持几乎相同,它引入了单独的unicode类型和编码处理.什么Python 3.x都有变化是unicode的成为唯一的字符串类型(并更名为str),而2.X有字节串(str,"...")和Unicode字符串(unicode,u"..."),经常但不总是不太搭配.(允许它们混合是尝试从字节串转换到unicode更容易,但结果是错误.)总而言之,Python的unicode支持相当不错,尽管Python 2.x中存在错误.有unicode文字和数字和命名转义,unicode文字中非ASCII字符的源编码声明,codecs模块自动编码/解码,许多库中的unicode支持(如正则表达式和DB-API模块)和内置unicode数据库.

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

  • '你'真的不是问题.当混合使用字节串和unicode时,这是隐式转换. (3认同)
  • 确实,Unicode*支持*在2.6和3.0之间并没有真正改变那么多,但重要的是人们是否*使用*功能.虽然很简单,但是这个小的"u"前缀是阻止人们使用Unicode字符串的障碍,所以它必须要去. (2认同)

jm6*_*666 6

Perl对unicode有很好的支持.你需要知道如何正确使用,但我从来没有找到任何语言比perl更好的unicode支持,特别是现在使用perl5.14.

  • 真的吗?我期待它确实如此,但我想问一下,因为[这个答案就这样了](http://stackoverflow.com/questions/6162484/why-does-modern-perl-avoid-utf-8-by-default/ 6163129#6163129)通过我的脊椎和几乎其他地方发送的寒意...... :-( (2认同)
  • 请仔细阅读http://stackoverflow.com/questions/6162484/why-does-modern-perl-avoid-utf-8-by-default(非常仔细).什么时候使用perl/unicode,你必须遵循一些规则.当你按照它们,你将获得非常称职和完整的unicode支持,包括角色名称,转换,整理,NFC/NFD等.恕我直言,它与任何其他语言都无法比较...... (2认同)
  • 是的,这是我链接的帖子,这是我的全部观点.我在深入阅读之前,决定不在我的问题中提及它.我认真考虑过这个问题,但是接受的答案听起来好像很麻烦(例如,与Postgres相比,"只是工作").我可能误解了,但...... (2认同)

归档时间:

查看次数:

1821 次

最近记录:

14 年,8 月 前