Ñ在Google App Engine网站中未显示

0 投票
1 回答
823 浏览
提问于 2025-04-15 14:38

我正在使用谷歌应用引擎来搭建一个网站,但在处理特殊字符时遇到了问题。我觉得问题主要集中在这两个代码示例上:

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文本)。

换句话说,你的问题主要是因为你没有正确设置响应的头部。

撰写回答