运行Json时出现UnicodeEncodeError

2024-10-01 13:31:12 发布

您现在位置:Python中文网/ 问答频道 /正文

运行此测试脚本时,我收到一个Unicode错误。你知道吗

import urllib
import json

movieTitle = "Bee Movie"
title = movieTitle.replace(" ", "+")
year = ""
omdbAPI = "http://www.omdbapi.com/?t={}&y={}&plot=short&r=json".format(
    title, year)
print (omdbAPI)
response = urllib.urlopen(omdbAPI)
data = json.loads(response.read())
valid_data = data["Response"]
print ("This data is: " + valid_data)

if valid_data == "True":
    print data["Title"]
    print data["Year"]
    print data["Plot"]
    print data["Rated"]
    print data["Released"]
    print data["Runtime"]
    print data["Genre"]
    print data["Director"]
    print data["Writer"]
    print data["Actors"]
    print data["Language"]
    print data["Country"]
    print data["Awards"]
    print data["Poster"]
    print data["Metascore"]
    print data["imdbRating"]
    print data["imdbVotes"]
    print data["imdbID"]
    print data["Type"]
    print data["Response"]
elif valid_data == "False":
    print ("This data is: " + valid_data)
else:
    raise ValueError("The information was not found")

错误:

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

我想这是因为演员中有一个很好的角色。你知道吗

我想我可以把.encode('utf8')放在print data["Actors"]之后,但这不是最聪明的做法。 我的意思是一个随机的字母可能会出现在更多的地方,而不是演员。在每个实例后面加上.encode('utf8')

更新:

Traceback (most recent call last):
  File "/Volumes/postergren_projectDrive/Projekt/programmingSandbox/python/courses/udacity/Programming Foundations with Python/moveis/Advance/media.py", line 25, in <module>
    print data["Actors"]
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 19: ordinal not in range(128)
[Finished in 0.1s with exit code 1]
[shell_cmd: "python" -u "/Volumes/postergren_projectDrive/Projekt/programmingSandbox/python/courses/udacity/Programming Foundations with Python/moveis/Advance/media.py"]
[dir: /Volumes/postergren_projectDrive/Projekt/programmingSandbox/python/courses/udacity/Programming Foundations with Python/moveis/Advance]
[path: /usr/bin:/bin:/usr/sbin:/sbin]

Tags: injsondatawithactorsnotencodeprint