所以我在Python3.5中遇到一个奇怪的编码错误,我正在读一个包含html-data的字符串,我正在处理这样的字符串:
def parseHtml(self,url):
r = requests.get(self.makeUrl())
data = r.text.encode('utf-8').decode('ascii', 'ignore')
self.soup = BeautifulSoup(data,'lxml')
当我尝试打印以下内容时发生错误:
def extractTable(self):
table = self.soup.findAll("table", { "class" : "messageTable" })
print(table)
我已经检查了我的语言环境,并尝试了各种各样的编码/解码变体,如之前在SO上的类似帖子所述。最奇怪的是(对我而言)该脚本可以在另一台机器和笔记本电脑上完美运行。但是在我的Windows机器上(使用cygwin到远程服务器)和我的Ubuntu安装它根本就不会运行并给我:
UnicodeEncodeError: 'ascii' codec can't encode character '\xa0' in position 1273: ordinal not in range(128)
答案 0 :(得分:0)
好的,所以我将文件从远程服务器移动到我的本地机器,它完美地执行了。然后我检查了我的sys.stdout.encoding:
<!--HTML-->
<div class="popup">
<div class="popupWindow">
<div class="popup_txt">
<div class="row">
<center>
<img src="images/logo.png" class="img-responsive" width="400px">
</center>
</div>
<hr style="border-top: 1px solid #000;">
<div class="row">
<h2>Where You Born Before</h2>
<h1 class="text-center"><span id="date"></span>?</h1>
<div class="popup_img answer">
<button class="popup_img_yes btn btn-primary btn-lg">Yes</button>
<button class="popup_img_no btn btn-primary btn-lg">No</button>
</div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://github.com/js-cookie/js-cookie/blob/master/src/js.cookie.js"></script>
显然出现了问题,所以我最终导出:
>>> import sys
>>> sys.stdout.encoding
'ANSI_X3.4-1968'
和voìla!