Written by BroytMann. Copyright (C) 1997-2007 PhiloSoft Design
"""
+import codecs
-import sys
-current_charset = sys.getdefaultencoding()
-if current_charset == "ascii":
- try:
- import locale
- except ImportError:
- pass
- else:
- current_charset = locale.getpreferredencoding()
-current_charset = current_charset.replace("windows-", "cp").lower()
+from m_lib.defenc import default_encoding
+current_charset = default_encoding.replace("windows-", "cp")
DEFAULT_CHARSET = "cp1251" # Stupid default for Russian Cyrillic
-
from HTMLParser import HTMLParseError
from m_lib.net.www.html import HTMLParser as _HTMLParser
for attrname, value in attrs:
if value:
value = value.strip().lower()
- if (attrname == 'rel') and (value in ('icon', 'shortcut icon')):
+ if (attrname == 'rel') and (value.lower() in ('icon', 'shortcut icon')):
has_icon = True
elif attrname == 'href':
href = value
if has_icon:
self.icon = href
- else:
- self.icon = None
import re
def parse_html(filename, charset=None, log=None):
+ if charset:
+ try:
+ codecs.lookup(charset) # In case of unknown charset...
+ except (ValueError, LookupError):
+ charset = None # ...try charset from HTML
+
infile = open(filename, 'r')
parser = HTMLParser(charset)