什么是½的ASCII码?

问题描述 投票:4回答:4

我想在文件中打印值'½'。我搜索了ascii值,因为Alt +(ascii Value)会给你相同的。令我惊讶的是,我在各个站点中找到了此符号的2个ascii值。一个是171,另一个是189。

我尝试使用171和189来编写这个符号。令我惊讶的是,如果我在Windows中编写,171将给我这个符号。但如果我在UNIX中写作,189会给我这个符号。

我知道同一个符号不能有2个ASCII值。但是我在不同的操作系统中获得了相同符号的2个有效代码。所以任何人都可以告诉符号½的真正ASCII码是什么?

windows unix ascii
4个回答
17
投票

½不是ASCII character set中的角色。

您在网上找到的值可能不同,因为它们使用不同的字符集。例如,在发明Unicode之前,Windows的本地化版本都使用了不同的code pages,其中基本的ASCII集合扩展了一些额外的字符。

当然,现在,一切都是(或应该)完全是Unicode。可以找到该字符的详细Unicode信息(粗俗的一半)here。注意,对于相同的数值也存在多个表示(例如,基数10,十六进制,二进制等)。


5
投票

在Windows中,如果您使用ALT代码,3位数将插入等效的“代码页850”字符,因此ALT + 171将插入½符号

189是½符号的ANSI / UTF-8 / WIN-1252 / ISO8859-1值。要使用ANSI的ALT代码,必须先按0,否则ALT + 0189会插入½符号


4
投票

请阅读ASCII维基百科页面。您将了解到ASCII没有“一半”字符。

目前,大多数系统都可以配置为使用UTF-8编码(这是Web上和Unix系统上的“默认”或至少是最常用的编码)。

UTF-8是Unicode的可变长度编码。这么多字符或字形由几个字节表示。对于½(正式的粗俗分数一半unicode字符),其UTF8编码是两个十六进制字节0Xc2 0xBD所以在C表示法\302\275

我正在使用Linux Gnome Character Map实用程序gucharmap来查找所有内容。

您可能对UTF-32(使用32位字符的固定长度编码,其中½由0x000000BD表示)感兴趣,或甚至UTF-16,其中许多字符是16位(特别是½是0x00BD,例如UTF-16中的一个16位字符) ), 但不是所有的。您可能也对wide characters感兴趣,即最近的C或C ++标准的wchar_t(在Windows上为UTF-16,在许多Unix上为UTF-32)。

FWIW,Qt使用QChar作为UTF-16(Java也有UTF-16 char ......),但Gtk使用UTF-8,即可变长度字符。

请注意,对于像UTF-8这样的可变长度字符编码,字符串中的第N个字符(不是第N个字节!)需要扫描字符串。此外,某些字节组合无效UTF-8。


-1
投票

我很确定它确实是ASCII表的一部分:

在Windows中,确保“NumLock”处于打开状态,然后尝试[ALT +(NumPAD)171] =½。 ¼使用[ALT + 172]

© www.soinside.com 2019 - 2024. All rights reserved.