首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unicode问题Django-Python-URLLIB-MySQL

Unicode问题Django-Python-URLLIB-MySQL
EN

Stack Overflow用户
提问于 2009-07-09 03:34:42
回答 2查看 1.4K关注 0票数 0

我正在获取一个网页(http://autoweek.com),并试图处理它,但得到编码错误。Autoweek声明"iso-8859-1“编码,并有单词"Nürburgring”(u带元音)

我有:

代码语言:javascript
复制
# -*- encoding: utf-8 -*-
import urllib
webpage = urllib.urlopen(feed.crawl_url).read()
webpage.decode("utf-8")

它给出了以下错误:

代码语言:javascript
复制
'utf8' codec can't decode bytes in position 7768-7773: unsupported Unicode code range"

如果我绕过.decode步骤并使用lxml库进行一些解析,则在将解析后的标题保存到数据库时会引发错误:

代码语言:javascript
复制
'utf8' codec can't decode bytes in position 45-50: unsupported Unicode code range

我的数据库有字符集utf8和排序规则utf-general-ci

我的设置:

姜戈

Python 2.4.3

MySQL 5.0.22

MySQL-python 1.2.1

mod_python 3.2.8

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-09 06:50:44

autoweek.com似乎对自己的编码感到困惑。它声明了冲突的字符集定义:

代码语言:javascript
复制
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

后来..。

代码语言:javascript
复制
<meta charset=iso-8859-1"/>.

iso-8859-1是正确的,因为它是在web服务器和.info()方法的报头中返回的(它实际上是解码的),但这表明您不一定要依赖web页面中的Content-Type声明。你应该遵循lavinio所描述的方法。

票数 0
EN

Stack Overflow用户

发布于 2009-07-09 03:48:03

如果webpage声明了iso-8859-1编码,你不能只做webpage.decode("iso-8859-1")

在这一点上,为你的应用程序解码了webpage。当它被写入数据库时,那里的映射应该处理char-to-utf8编码。

要获得正确的编码,要么告诉get服务器你只接受,比如说UTF-8,然后你就会(希望)得到它,因为几乎每个人都阅读UTF-8 (或者你可以尝试使用ISO-8859-1);或者使用.info来检查返回的流的编码名称。

详细信息请参见urllib2 - The Missing ManualQuick reference to HTTP headers

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1101715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档