kno*_*orv 18 unicode programming-languages localization language-design internationalization
哪些广泛使用的编程语言是在支持Unicode的基础上设计的?
许多编程语言在后来的版本中添加了Unicode支持,但是从第一天开始就使用Unicode支持广泛使用哪种语言?
Ken*_*nan 32
Java可能是第一个获得全面支持Unicode的流行语言.
Jay*_*uzi 31
基本上所有.NET语言都是Unicode语言,例如C#和VB.NET.
Mar*_*ell 12
我不知道这在其他语言中有多远,但关于C#的一个有趣的事情是,不仅运行时(string类等)知道unicode - 而且源代码完全支持unicode:
using ????? = System.Object;
using ????? = System.Int32;
public class ???? : ????? {
public ????? ???() {
int ??? = 0;
for (int ? = 0; ? < 20; ?++) ???+=?;
return ???;
}
}
Run Code Online (Sandbox Code Playgroud)
使用编程语言从一开始就很难为未来设计Unicode支持.
Java是将其设计为语言规范的语言之一.但是,Java v1.0中的Unicode支持与Java SDK的v5和v6 不同.这主要是由于最初设计语言时语言规范所适用的Unicode版本.Java尝试跟踪每个主要版本的Unicode标准中的更改.
JLS的早期实现可以声称支持Unicode,主要是因为Unicode本身支持65536个字符(Java支持Unicode 1.1的v1.0,Java v1.4支持Unicode 3.0),它与字符占用的16位存储空间兼容.随着Unicode 3.1的变化 - 它是一个不断发展的标准,通常在每个版本中添加更多字符.3.1中后面添加的字符称为补充字符.Java 5中通过JSR-204添加了对补充字符的支持; Java 5和6支持Unicode 4.0.
因此,如果不同的编程语言不同地实现Unicode支持,请不要感到惊讶.
另一方面,PHP(!!)和Ruby在开始时没有内置Unicode支持.
PS:支持v5.1的Unicode将在Java 7中完成.
Java和.NET语言,正如其他评论者所指出的那样,尽管Java的字符串是UTF-16而不是UCS或UTF-8.(当时,它似乎是一个明智的想法!现在显然UTF-8或UCS会更好.)Python 3实际上是Python 1.x和2.x中不同的,不兼容的语言,因此它也符合条件.
1992年左右的Plan9语言可能是第一个这样做的:他们的方言C rc,Alef mk,ACID等都是支持Unicode的.他们采用了非常简单的方法,即任何非ASCII的都是标识符字符.从1993年的主题看他们的论文.(这是发明UTF-8的项目,这意味着他们可以以一种非常兼容的方式完成这项工作,特别是在所有程序中都没有管道二进制文本.)
支持非ASCII标识符的其他语言包括当前的PHP.