Django 和 lxml 解码问题
我在使用部署版本的Django应用时遇到了一个奇怪的问题,跟lxml有关。我用lxml来解析从服务器获取的另一个HTML页面。在我自己电脑上的开发服务器上,这一切都运行得很好,但在服务器上却出现了UnicodeDecodeError
的错误。
('utf8', "\x85why hello there!", 0, 1, 'unexpected code byte')
我已经确认Apache(使用mod_python)是以LANG='en_US.UTF-8'
的设置运行的。
我尝试在网上搜索这个问题,并尝试了不同的方法来正确解码这个字符串,但我还是搞不定。
在你的回答中,你可以假设我的字符串叫hello
或者其他什么名字。
相关问题:
- 如何在Apache中使用Python 3和Django?
- 在Apache中使用Mod_Python和多个Python安装的Virtualenv运行Django
- Django自定义认证后端在Apache上未被识别
- Django: PYTHON_EGG_CACHE 访问 denied 错误
- 在Apache上使用Comet/Orbited构建Django应用,选择mod_wsgi还是mod_python?
- 如何在Django + Apache + mod_python中使用Staticgenerator
- Django新手部署问题 - ImportError: 无法导入设置'settings
- 重启运行在Apache + mod_python上的Django应用
3 个回答
-2
因为修改site.py并不是一个理想的解决办法,所以可以试试在你程序的开头加上这个:
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
0
像 u"\x85why hello there!"
这样的语法有用吗?
你可以看看以下来自官方Python文档的资源,这些可能会对你有帮助:
3
"\x85为什么你好啊!" 不是一个utf-8编码的字符串。在把网页内容传给lxml之前,你应该先解码网页。你可以通过查看获取网页时的http头信息来检查它使用的编码,或许能在这里找到问题所在。