使用ISO 8859-1在Python中编码字符

Dri*_*Boy 6 python iso-8859-1 character-encoding

有了ord(ch)你可以得到字符数字代码ch最多127.是否有任何函数返回0-255之间的数字,所以还要覆盖ISO 8859-1字符?
编辑:按照我上一版本的代码和错误得到

#!/usr/bin/python
# coding: iso-8859-1

import sys
reload(sys)
sys.setdefaultencoding('iso-8859-1')
print sys.getdefaultencoding()  # prints "iso-8859-1" 

def char_code(c):
    return ord(c.encode('iso-8859-1'))
print char_code(u'à')
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:TypeError:ord()期望一个字符,但找到长度为2的字符串

Mar*_*som 2

当您从 Unicode 字符串开始时,您需要而encode不是decode.

\n\n
>>> def char_code(c):\n        return ord(c.encode(\'iso-8859-1\'))\n\n>>> print char_code(u\'\xc3\xa0\')\n224\n
Run Code Online (Sandbox Code Playgroud)\n\n

特别是对于 ISO-8859-1,您甚至根本不需要对其进行编码,因为 Unicode 使用 ISO-8859-1 字符作为其前 256 个代码点。

\n\n
>>> print ord(u\'\xc3\xa0\')\n224\n
Run Code Online (Sandbox Code Playgroud)\n\n

编辑:我现在看到问题了。您已给出源代码编码注释,表明源代码采用 ISO-8859-1。不过,我敢打赌您的编辑器实际上是在 UTF-8 下工作的。源代码将被错误解释,您认为创建的单字符字符串实际上是两个字符。请尝试以下操作来查看:

\n\n
print len(u\'\xc3\xa0\')\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您的编码正确,它将返回1,但在您的情况下它可能是2

\n