用python把它挑了几块那么肯定是个傻瓜?但在这里看不到令人满意的答案。在
我有一个json utf-8文件,其中一些片段有grave的,accute的等等。。。。我使用的是编解码器(例如):
str=codecs.open('../../publish_scripts/locations.json', 'r','utf-8')
locations=json.load(str)
for location in locations:
print location['name']
对于印刷,有什么特别需要做的吗?它给了我以下信息
ascii'codec无法在位置5编码字符u'\xe9'
看起来是e-accute的正确utf-8值。我怀疑我在打印方面出了问题。迭代会导致它失去utf-8'ness吗?在
PHP和Ruby版本可以很好地处理utf-8;这些语言中是否存在python无法做到的松散性?在
泰铢
你可能读得对。打印时出错。Python尝试将unicode字符串转换为ascii,但在位置5处的字符上失败。在
试试这个:
如果您的终端设置为期望utf-8格式的输出,这将正确打印。在
在编解码器打开()将使用您提供的编解码器(utf-8)对文件内容进行解码。然后有一个pythonunicode对象(其行为类似于string对象)。在
打印unicode对象将导致使用默认编解码器(通常是
ascii
)进行隐式(幕后)编码。如果ascii
不能对所有存在的字符进行编码,它将失败。在因此,首先要对其进行编码:
编辑:
为了您的信息,
json.load()
实际上接受一个类似文件的对象(这是codecs.open()
返回的内容)。此时,您所拥有的既不是字符串也不是unicode对象,而是文件周围的iterable包装器。在默认情况下,
^{pr2}$json.load()
要求文件为utf8编码,这样可以简化代码片段:它与PHP中的相同。UTF8字符串适合打印。在
相关问题 更多 >
编程相关推荐