Man*_*edi 29 python unicode google-app-engine jinja2 python-unicode
我正在使用Google App Engine开发一个小应用程序,该应用程序使用Quora RSS提要.有一个表单,根据用户输入的输入,它将输出与输入相关的链接列表.现在,应用程序适用于单个字母查询和大多数双字母单词,如果单词用' - '分隔.但是,对于三个字母的单词和一些双字母单词,我收到以下错误:
UnicodeDecodeError:'ascii'编解码器无法解码位置48中的字节0xe2:序数不在范围内(128)
这是我的Python代码:
import os
import webapp2
import jinja2
from google.appengine.ext import db
import urllib2
import re
template_dir = os.path.join(os.path.dirname(__file__), 'templates')
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir), autoescape=True)
class Handler(webapp2.RequestHandler):
def write(self, *a, **kw):
self.response.out.write(*a, **kw)
def render_str(self, template, **params):
t = jinja_env.get_template(template)
return t.render(params)
def render(self, template, **kw):
self.write(self.render_str(template, **kw))
class MainPage(Handler):
def get(self):
self.render("formrss.html")
def post(self):
x = self.request.get("rssquery")
url = "http://www.quora.com/" + x + "/rss"
content = urllib2.urlopen(url).read()
allTitles = re.compile('<title>(.*?)</title>')
allLinks = re.compile('<link>(.*?)</link>')
list = re.findall(allTitles,content)
linklist = re.findall(allLinks,content)
self.render("frontrss.html", list = list, linklist = linklist)
app = webapp2.WSGIApplication([('/', MainPage)], debug=True)
Run Code Online (Sandbox Code Playgroud)
这是html代码:
<h1>Quora Live Feed</h1><br><br><br>
{% extends "rssbase.html" %}
{% block content %}
{% for e in range(1, 19) %}
{{ (list[e]) }} <br>
<a href="{{ linklist[e] }}">{{ linklist[e] }}</a>
<br><br>
{% endfor %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
Jon*_*ott 45
Python 可能会尝试使用ascii编解码器将unicode字符串解码为普通的str并且失败.当您使用unicode数据时,需要对其进行解码:
content = content.decode('utf-8')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45191 次 |
| 最近记录: |