UnicodeDecodeError:'ascii'编解码器无法解码位置0的字节0xe5:序数不在范围内(128)

时间:2014-01-27 23:16:26

标签: api google-app-engine youtube flask

我正在使用Flask和Google App Engine构建Web应用程序。此网络应用程序中的一个页面通过YouTube API拨打电话,以获取带有搜索字词的视频。

当我尝试查询YoutubeVids.html时,我收到以下错误。

仅当我通过Jinja2模板将某个参数传递给页面时才会发生这种情况。

file "/Users/xxxxx/App-Engine/src/templates/YoutubeVids.html", line 1, in top-level template code
    {% extends "master.html" %}
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)

INFO     2014-01-27 22:39:40,963 module.py:612] default: "GET /xxx/yyyy HTTP/1.1" 500 291

2 个答案:

答案 0 :(得分:89)

想出来。

我在python文件的开头放了以下内容

import sys
reload(sys)
sys.setdefaultencoding("utf-8")

答案 1 :(得分:11)

来自文档:Jinja2在内部使用Unicode,这意味着您必须将Unicode对象传递给渲染函数或仅包含ASCII字符的字节串。

Python 2.x中的普通字符串是字节字符串。使用unicode:

byte_string = 'a Python string which contains non-ascii data like €äãü'
unicode_string = byte_string.decode('utf-8')

更多:http://blog.notdot.net/2010/07/Getting-unicode-right-in-Python