Ñ在Google App Engine网站中未显示
我正在使用谷歌应用引擎来搭建一个网站,但在处理特殊字符时遇到了问题。我觉得问题主要集中在这两个代码示例上:
request = urlfetch.fetch(
url=self.WWW_INFO,
payload=urllib.urlencode(inputs),
method=urlfetch.POST,
headers={'Content-Type': 'application/x-www-form-urlencoded'})
print request.content
前面的代码可以正常显示内容,包括特殊字符。但是,使用框架正确显示内容的方式是:
request = urlfetch.fetch(
url=self.WWW_INFO,
payload=urllib.urlencode(inputs),
method=urlfetch.POST,
headers={'Content-Type': 'application/x-www-form-urlencoded'})
self.response.out.write(request.content)
这个方法却不能显示特殊字符,而是只打印出一个问号(�)。我该怎么做才能正确显示这些字符呢?
我知道我可能漏掉了什么,但就是搞不清楚是什么。网站设置了 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
,我也试过用 charset=UTF-8
,但都没有成功。
如果有人能给我一些建议,帮我找到解决办法,我会非常感激。
1 个回答
1
你需要从获取的结果中找到 content-type
头部里的 charset
,然后用这个字符集来把字节解码成Unicode。接着,在响应中设置你喜欢的编码(我建议用utf-8,因为没有特别的理由去用别的编码),然后通过这个编码来处理Unicode文本。虽然在某些情况下你可以直接把内容原封不动地返回,不需要经过Unicode处理,但一般来说还是推荐这样做(输入和输出时使用编码的字节串,而在你的应用内部始终使用Unicode文本)。
换句话说,你的问题主要是因为你没有正确设置响应的头部。