编程语言
首页 > 编程语言> > python-PyObjC中的Unicode问题

python-PyObjC中的Unicode问题

作者:互联网

我试图找出Mac OS X上的PyObjC,并且编写了一个简单的程序来打印出地址簿中的名称.但是,我在输出编码方面遇到了一些麻烦.

#! /usr/bin/env python
# -*- coding: UTF-8 -*-

from AddressBook import *

ab = ABAddressBook.sharedAddressBook()
people = ab.people()

for person in people:
    name = person.valueForProperty_("First") + ' ' + person.valueForProperty_("Last")
    name

当我运行该程序时,输出看起来像这样:

...snip...
u'Jacob \xc5berg'
u'Fernando Gonzales'
...snip...

有人可以解释为什么字符串使用unicode,但是内容看起来像那样吗?

我还注意到,当我尝试打印名称时,出现错误

UnicodeEncodeError: 'ascii' codec can't encode character u'\xc5' in position 6: ordinal not in range(128)

解决方法:

如果您在交互式控制台中运行问题中的代码,由于循环的最后一条语句,解释器将打印“名称”的代表.

如果将循环的最后一行从“名称”更改为“打印名称”,则输出应该是正确的.我已经在10.5.7系统上使用Terminal.app测试了它.

标签:pyobjc,unicode,python,macos
来源: https://codeday.me/bug/20191210/2102956.html