Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyObjC中的Unicode问题_Python_Macos_Unicode_Pyobjc - Fatal编程技术网

Python PyObjC中的Unicode问题

Python PyObjC中的Unicode问题,python,macos,unicode,pyobjc,Python,Macos,Unicode,Pyobjc,我试图在MacOSX上找出PyObjC,我已经编写了一个简单的程序来打印地址簿中的姓名。但是,我在输出的编码方面遇到了一些问题 #! /usr/bin/env python # -*- coding: UTF-8 -*- from AddressBook import * ab = ABAddressBook.sharedAddressBook() people = ab.people() for person in people: name = person.valueForPr

我试图在MacOSX上找出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)

只需写入变量名即可将
repr(name)
发送到标准输出,并且
repr()
对所有unicode值进行编码

print
尝试将
u'Jacob\xc5berg'
转换为ASCII,但这不起作用。尝试将其写入文件

这意味着你在使用legacy, 控制台有限或配置错误。如果 你只是想和我玩 unicode在交互式提示下移动到 支持unicode的现代控制台。最 现代Python发行版附带 空闲,您可以打印所有 unicode字符


如果您将Mac终端设置为UTF-8(终端、首选项、设置、高级、国际下拉列表),并在UTF-8(
print name.encode(“UTF-8”)编码后向其发送Unicode文本,则仅影响Python解码源代码中的注释和字符串文本的方式,而不影响标准输出的配置方式等)
),您应该没事。

通过以下方式将其转换为unicode字符串:

print unicode(name)

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


如果将循环的最后一行从“name”更改为“print name”,则输出应该可以。我已经在10.5.7系统上使用Terminal.app对此进行了测试

正如u'Fernando Gonzales所看到的,它已经是一个unicode字符串了。也许,是的,但这确实解决了问题。我也不知道为什么,我对Python的字符串处理还不够深入。
print unicode(name)