Python编码问题,cgi脚本输出BeautifulSoup处理的中文内容(decode处理)出错

最近写一个程序,想要先用BeautifulSoup处理一个html页面,然后再输出一下到我的一个python写的cgi页面上,因为一些中文字符都是\X**的格式,网上查了... 最近写一个程序,想要先用BeautifulSoup处理一个html页面,然后再输出一下到我的一个python写的cgi页面上,因为一些中文字符都是\X**的格式,网上查了说BeautifulSoup输出的是unicode字符。然后需要把字节类型的转为字符输出。在ide中是可以正常转换的,如下图。

但是在浏览器中就会出错,报一个UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 89: illegal multibyte sequence 错误,不清楚是为什么。网上有人说输出的文件是gbk编码导致的,但是我的是html页面,所以不知道如何处理,希望大牛帮忙解答。或者推荐我有关python编码的书也可以,很想弄明白这是为什么。

我的财富值比较少,希望大家多多谅解。
展开
 我来答
beforeicer
2013-11-11
知道答主
回答量:16
采纳率:0%
帮助的人:8.2万
展开全部
在python中,中文显示乱码问题的原因是双方使用的编码不一致,比如一个文件使用utf8标记中文而另外一个文件用gbk标记中文,如果我将utf8的文件用gbk解析的话当然是乱码了。
这时,需要用unicode作为中介来完成转换。
假设s1是utf8的字符串(s1是什么编码的字符串一定要明确),要转换为unicode,用temp=s1.decode('utf8')
然后转换为gbk,用s2=temp.encode('gbk')
这样s2才能显示为正确的中文。

为了指定脚本文件中的中文编码可以在脚本头加下面这行:
# -*- coding: gb2312 -*-
追问
在python3中默认编码已经改成utf8了,我的编码也都是用的utf8编码的。我在cgi脚本中输出的内容。这个意思是,我cgi脚本是utf8的编码,然后输出的html页面为gbk编码,所以出现了问题。但是这个怎么去修改为utf8呢,我在网上搜索不到啊。
追答
cgi里面加# -*- coding: gb2312 -*-

html头中加meta标签:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式