【问题标题】:Is there a way to get ASCII characters in Python?有没有办法在 Python 中获取 ASCII 字符?
【发布时间】:2021-09-21 13:55:18
【问题描述】:

Python 的内置函数ordchr 分别返回基于16 位数字和数字的UNICODE 字符。有没有办法在不定义字典的情况下获取基于 8 位无符号数字的扩展 ASCII 字符 (0-255)?

我可以使用 Unicode 字符,但它的控制字符与 ASCII 不同(特别是 10、13、26 和 255)。这四个数字是我不能使用 Unicode 的主要原因,因为它们对我的代码很重要。

10:换行

13:回车

26:替换

255:nbsp

【问题讨论】:

  • 也许string.ascii_letters 可能就是您要找的东西?
  • Unicode 代码点从 0-127 与 ASCII 字符完全相同,不需要映射。
  • @Enigmacy:大约有一千种不同的扩展。例如,一些扩展有欧元符号€,但大多数没有。 Unicode 的前 256 个字符特别是 ASCII 的 ISO 8859-1“Latin-1”扩展。
  • @Enigmacy:没有“扩展 ASCII”这样的东西。或者更准确一点:有很多很多基于 ASCII 的 8 位编码,有时统称为“扩展 ASCII”。但它们是“扩展的 ASCII”,与 Unicode 本身是“扩展的 ASCII”的意义大致相同。请忘记这个术语的存在,因为它会导致您在这个问题中遇到的那种混乱。如果您需要“扩展 ASCII”,那么请谈谈您关心的 特定 编码,但不要谈论 ASCII(因为它只是 0-127)。
  • @Enigmacy:10,13 和 26 确实是 ASCII、每个 ASCII 扩展名和 Unicode。但是 255 在大多数 ASCII 扩展中不是控制字符,尤其是在 ISO-8859-1 中。它在哪里ÿ。因此,Unicode中的U+00FF也是ÿ

标签: python python-3.x ascii


【解决方案1】:

Python3 有bytes 类型,它有一个decode 方法将每个字节转换为相应的Unicode 字符。但是由于有大约一千种不同的面向字节的字符集,你必须告诉decode你使用的是哪一个。

Python 3 的默认值为'utf-8',但注释“255 是控制代码”告诉我您没有使用 UTF-8。我和 Python 都没有水晶球,所以你需要弄清楚你正在使用的字符集的名称。

[编辑] “nbsp”可能意味着非中断空间,U+00A0。如果它被编码为 255,那么您可能正在处理一些 DOS code page 的风格。 .decode('cp850') 可能有效,但正如我所说,有数千个扩展名,猜错名称会产生奇怪的 Unicode 输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    相关资源
    最近更新 更多