【问题标题】:Python converting code page character number to unicodePython将代码页字符号转换为unicode
【发布时间】:2018-11-07 03:05:09
【问题描述】:

默认情况下,print(chr(195)) 在位置 195 ("Ã") 处显示 unicode 字符 如何打印出现在code page1251 中的chr(195),即。 “Г” 我试过了:print(chr(195).decode('cp1252')) 和各种 .encode 方法。

【问题讨论】:

标签: python unicode character-encoding codepages


【解决方案1】:

由于您无法将“原始”值 0xC3 存储在字符串中(如果您这样做了,您不应该拥有 - 原始二进制“未解析”数据应该是字节数组):从原始数据转换的正确方法byte 数组确实是.decode('cp1251'):

>>> print (b'\xc3'.decode('cp1251'))
Г

但是,如果您已经在字符串中得到它,那么最简单的方法是首先使用 1-on-1“编码”Latin-1 从字符串转换为 bytes 对象:

str = 'Ãamma'
print (bytes(str.encode('latin1')).decode('cp1251'))
>>> Гamma

【讨论】:

    【解决方案2】:

    在 Python 3 中,chr(n) 返回一个 Unicode 字符串,该字符串只能进行编码。使用bytes 创建可解码的字节串:

    >>> bytes([195])
    b'\xc3'
    >>> bytes([195]).decode('cp1251')
    'Г'
    >>> bytes([195,196,197])
    b'\xc3\xc4\xc5'
    >>> bytes([195,196,197]).decode('cp1251')
    'ГДЕ'
    

    【讨论】:

      【解决方案3】:

      你可以使用 urllib

      print urllib.quote_plus(str.encode('cp1251'))
      

      另外请记住,如果您使用的是国际字符串,请确保在您正在解析的字符串中包含 u 前缀。

      str = u"whateverhere"
      

      更改为删除不赞成票??

      【讨论】:

      • 抱歉,我不是故意要否决你的答案,它不会让我改变它。
      • 重新点击downvote按钮删除投票,或点击upvote更改您的投票@iantresman
      • 是的,我都试过了。这表明如果您编辑您的答案,我也许可以更改投票。
      • @iantresman 刚刚编辑,虽然这是我第一次听说
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 1970-01-01
      • 1970-01-01
      • 2020-01-21
      • 2018-09-20
      • 1970-01-01
      相关资源
      最近更新 更多