我正在尝试使用python3的HTMLParser解析HTML页面。
编辑:
尝试使用以下方式打印角色:
print ('\u25bc') #Prints the '▼' character
抛出UnicodeEncodeError。
代码是文档样本中提供的代码:
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
print("Start tag:", tag)
for attr in attrs:
print(" attr:", attr)
def handle_endtag(self, tag):
print("End tag :", tag)
def handle_data(self, data):
print("Data :", data)
def handle_comment(self, data):
print("Comment :", data)
def handle_entityref(self, name):
c = chr(name2codepoint[name])
print("Named ent:", c)
def handle_charref(self, name):
if name.startswith('x'):
c = chr(int(name[1:], 16))
else:
c = chr(int(name))
print("Num ent :", c)
def handle_decl(self, data):
print("Decl :", data)
当提供HTML文档(UTF-8字符串)时,我收到错误:
UnicodeExcodeError
'ascii' codec can't encode character '\u25bc' in position 0: ordinal not in range(128)
来自解析器getpos()方法的违规行是:
# |-- Parser stopped here.
<li><a href="#" class="dir">▼ Community</a>
读取的字节被正确解码为UTF-8字符串,然后被提供给解析器的feed()方法,该方法由于某种原因尝试将其编码为ASCII。
系统区域设置默认设置为“POSIX”,但使用
本地设置为en_US.UTF-8export LANG=en_US.UTF-8
我该如何解决这个问题?
答案 0 :(得分:1)
我通过重新配置区域设置
解决了这个问题在debian中:
sudo dpkg-reconfigure locales
选择区域设置
en_US.UTF-8
然后选择此区域设置作为默认系统区域设置。