【问题标题】:What is the ASCII Code of ½?½的ASCII码是什么?
【发布时间】:2013-04-03 05:48:22
【问题描述】:

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

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

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

【问题讨论】:

  • 没有 ASCII 码。你在考虑另一个字符集吗?
  • 那不是 ASCII。它是 ISO8859-1 / 'latin-1'。不同的编码会以不同的方式处理 8 位字符,因此如何处理取决于您的操作系统和环境设置。

标签: windows unix ascii iso-8859-1


【解决方案1】:

½ 不是 ASCII character set 中的字符。

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

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

【讨论】:

  • 感谢您的回复。这是否意味着由于这可能是一个多字节字符集,它可能没有固定的 ASCII 码???
  • 没错。您不能依赖在所有多字节字符集 (MBCS) 中具有相同值(或什至存在)的“扩展”(即非 ASCII)字符。当然,这不是问题,因为现在没有充分的理由使用 MBCS。将您的应用编译为 Unicode,在 Windows 上使用 UTF-16 表示。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    请阅读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 位(特别是 ½ 是 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。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

      • 你认为是 ASCII,其实不是。不幸的是,这很常见。如果有人说某事是 ASCII,请询问说明或更正的规范。
      【解决方案5】:

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

      但它有一个 Unicode 代码:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-08
        • 1970-01-01
        • 1970-01-01
        • 2013-05-07
        • 2012-10-07
        • 1970-01-01
        • 2014-01-01
        • 1970-01-01
        相关资源
        最近更新 更多