Skip to main content
 首页 » 编程设计

python之Python 的 urllib 中网页的 Unicode 问题

2025年05月04日21artech

我似乎遇到了正确阅读和查看网页的常见问题。看起来 Python 以 UTF-8 格式读取页面,但是当我尝试将其转换为更易查看的格式 (iso-8859-1) 时,出现此错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 2: ordinal not in range(128) 

代码如下所示:

#!/usr/bin/python 
from urllib import urlopen 
import re 
 
url_address = 'http://www.eurohockey.net/players/show_player.cgi?serial=4722' 
 
finished = 0 
begin_record = 0 
col = 0 
str = '' 
 
for line in urlopen(url_address): 
    if '</tr' in line: 
        begin_record = 0                    
        print str 
        str = '' 
        continue 
 
    if begin_record == 1: 
        col = col + 1 
        tmp_match =  re.search('<td>(.+)</td>', line.strip()) 
        str = str + ';' + unicode(tmp_match.group(1), 'iso-8859-1') 
 
    if '<tr class=\"even\"' in line or '<tr class=\"odd\"' in line:  
        begin_record = 1 
        col = 0 
        continue 

我应该如何处理这些内容? Firefox 至少认为它是 iso-8859-1 并且查看该页面的内容是有意义的。错误显然来自 'ä' 字符。

如果我要将该数据保存到数据库中,我是否应该不必费心更改编解码器然后在显示时进行转换?

请您参考如下方法:

正如 Lennart 所指出的,您的问题不在于解码。它试图编码成“ascii”,这通常是 print 语句的问题。我怀疑这条线

print str 

是你的问题。您需要将 str 编码为您的控制台使用的任何内容才能使该行工作。