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