10

我想在文件中打印值“½”。我搜索了它的 ascii 值,因为 Alt+(ascii Value) 会给你同样的结果。令我惊讶的是,我在各种站点中发现了这个符号的 2 个 ascii 值。一个是171,另一个是189。

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

我知道同一个符号不能有 2 个 ASCII 值。但是我在不同的操作系统中获得了相同符号的 2 个有效代码。那么谁能说出符号½的真正ASCII码是什么?

4

5 回答 5

22

½ 不是ASCII 字符集中的字符。

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

现在,当然,一切都是(或应该是)完全 Unicode。可以在此处找到该字符的详细 Unicode 信息(粗俗分数的一半) 。请注意,同一数值也有多种表示形式(例如,以 10 为底、十六进制、二进制等)。

于 2013-04-03T05:49:42.730 回答
8

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

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

于 2015-12-21T11:09:32.710 回答
5

请阅读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,例如一个 16 位字符) UTF-16),但不是全部。您可能还对宽字符感兴趣,即wchar_t最近的CC++标准(在 Windows 上是 UTF-16,在许多 Unix 上是 UTF-32)。

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

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

于 2013-04-03T05:52:33.113 回答
0

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

但它有一个Unicode代码:

  • ½ U+00BD普通分数二分之一

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

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

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

  • 1⁄2
  • 3⁄5
  • 22⁄7
  • 355⁄113
  • 355⁄113 - 1⁄3748629
于 2021-04-21T14:18:05.520 回答
0

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

在 Windows 中,确保“NumLock”已打开,然后尝试 [ALT + (NumPAD)171] = ½。1/4 使用 [ALT + 172]

于 2017-08-15T08:53:58.347 回答