Django 和 lxml 解码问题

3 投票
3 回答
1333 浏览
提问于 2025-04-15 11:20

我在使用部署版本的Django应用时遇到了一个奇怪的问题,跟lxml有关。我用lxml来解析从服务器获取的另一个HTML页面。在我自己电脑上的开发服务器上,这一切都运行得很好,但在服务器上却出现了UnicodeDecodeError的错误。

('utf8', "\x85why hello there!", 0, 1, 'unexpected code byte')

我已经确认Apache(使用mod_python)是以LANG='en_US.UTF-8'的设置运行的。

我尝试在网上搜索这个问题,并尝试了不同的方法来正确解码这个字符串,但我还是搞不定。

在你的回答中,你可以假设我的字符串叫hello或者其他什么名字。

相关问题:

3 个回答

-2

因为修改site.py并不是一个理想的解决办法,所以可以试试在你程序的开头加上这个:

import sys
reload(sys)
sys.setdefaultencoding("utf-8")
0

u"\x85why hello there!" 这样的语法有用吗?

你可以看看以下来自官方Python文档的资源,这些可能会对你有帮助:

3

"\x85为什么你好啊!" 不是一个utf-8编码的字符串。在把网页内容传给lxml之前,你应该先解码网页。你可以通过查看获取网页时的http头信息来检查它使用的编码,或许能在这里找到问题所在。

撰写回答