什么是½的ASCII码?

时间:2013-04-03 05:48:23

标签: windows unix ascii

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

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

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

的真正ASCII代码是什么

4 个答案:

答案 0 :(得分:17)

½不是ASCII character set中的字符。

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

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

答案 1 :(得分:4)

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

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

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

我正在使用Linux Gnome字符映射实用程序gucharmap来查找所有内容。

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

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

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

答案 2 :(得分:0)

正如其他人指出的那样:它不在 ASCII 表中(值 0..127)。

但它有一个 Unicode 代码:

  • ½ U+00BD 粗俗分数一半

它也可以使用 unicode U+2044 Fraction Slash 放入文本:

  • 您的文本包含三个代码点:12
  • 但它被渲染为 1⁄2

这具有适用于任何分数的优点:

  • 1⁄2
  • 3⁄5
  • 22⁄7
  • 355⁄113
  • 355⁄113 - 1⁄3748629

答案 3 :(得分:-1)

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

在Windows中,确保“NumLock”已启用,然后尝试[ALT +(NumPAD)171] =½。 对于¼使用[ALT + 172]