Python:打印转义的 Unicode 字符

2 投票
2 回答
3759 浏览
提问于 2025-04-16 06:25

我尝试用Python把一个ASCII字符串转换成一个转义的伪Unicode字符串,但到现在为止都没有成功。

我想做的事情是:把ASCII字符'a'转换成ASCII字符串"<U0061>"。

我可以用unicode('a')来转换"a",但我无法把'a'的数值安全地保存为一个ASCII字符串。

我该怎么做呢?

2 个回答

1

这里有一个简单的例子,可以让你用Python自带的编码/解码工具来使用Ignacio的解决方案。如果你需要更稳定的东西(比如有合适的错误处理等),可以查看http://docs.python.org/library/codecs.html

import codecs


def  encode(text, error="strict"):
    return ("".join("<U%04x>" % ord(char) for char in text), len(text))

def search(name):
    if name == "unicode_ltgt":
        info = codecs.CodecInfo(encode, None, None, None)
        info.name = "unicode_ltgt"
        info.encode = encode
        return info
    return None

codecs.register(search)

if __name__ == "__main__":
    a = u"maçã"
    print a.encode("unicode_ltgt")

(只需将这个作为模块导入,就会安装编码器“unicode_ltgt”,并且可以在任何“.encode”调用中使用,就像给出的例子一样)

7

你可以使用 ord() 这个函数把一个字符转换成它的字符值(也就是字符串类型)或者代码点(unicode)。然后,你可以用合适的字符串格式化方法把它转换成文本表示。

'U+%04X' % (ord(u'A'),)

撰写回答