Unicode和Ascii字符是相同的吗?

35

Unicode字符编码准确来说是什么?它与ASCII字符有何不同之处?

2个回答

54

Unicode是一种为几乎所有使用中的语言(以及许多其他字符,如数学符号)分配唯一数字(称为代码点)的方法。有许多将Unicode字符串编码为字节的方法,例如UTF-8UTF-16

ASCII仅为128个字符(a-z、A-Z、0-9、空格、一些标点符号和一些控制字符)分配值。

对于每个具有ASCII值的字符,其Unicode代码点和ASCII值相同。

在大多数现代应用程序中,您应该优先使用Unicode字符串而不是ASCII。这可以让您拥有带有重音字符的用户名或地址的用户,并将界面本地化到英语以外的语言。


但是我如何使用Unicode字符?我可以通过将字符强制转换为整数来使用ASCII字符,但是我能否对Unicode字符执行相同的操作? - Ghost
@Ghost:不清楚你为什么需要将字符转换为整数。你想做什么? - Mark Byers
我想说的是,要获取字符的ASCII值,我需要将其强制转换为int类型:char a='a'; int b=(int)a // a的ASCII值 - Ghost
@Ghost:你刚刚发布的代码给出了字符的Unicode代码点。对于那些具有ASCII值的字符,这与ASCII值相同。实际上,你很少需要关心特定字符具有的确切代码点值。 - Mark Byers
@MarkByers:小心,这取决于编程语言。有些使用UTF-16作为其内部表示,因此强制转换为int可能只会给您提供半个代理对。 - Joe Hildebrand
@MarkByers。"对于每个具有ASCII值的字符,Unicode代码点和该字符的ASCII值相同。" 这仅适用于UTF-8,对吗? - David Zheng

14

前128个Unicode编码和ASCII相同,之后还有大约100,000个编码。

Unicode有两种常见的格式:UTF-8使用1-4个字节表示每个值(因此对于前128个字符,UTF-8与ASCII完全相同),而UTF-16则使用2或4个字节。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接