]> git.phdru.name Git - bookmarks_db.git/commitdiff
Recode from DEFAULT_CHARSET if recoding from cp1252 (bad guess by BeautifulSoup)...
authorOleg Broytman <phd@phdru.name>
Tue, 18 Dec 2007 05:52:48 +0000 (05:52 +0000)
committerOleg Broytman <phd@phdru.name>
Tue, 18 Dec 2007 05:52:48 +0000 (05:52 +0000)
git-svn-id: file:///home/phd/archive/SVN/bookmarks_db/trunk@112 fdd5c36f-1aea-0310-aeeb-c58d7e2b6c23

Robots/parse_html.py

index 3e20a5516a775eb8e425bdf932831bbcb559641f..3250a0de5980c43a00c6cce8ff5e91a9e5b5471c 100755 (executable)
@@ -54,10 +54,20 @@ def parse_html(filename, charset=None, log=None):
          if parser.meta_charset:
             if log: log("   META charset   : %s" % parser.charset)
          else:
-            if log: log("   charset        : %s" % parser.charset)
-         if log: log("   title          : %s" % title)
-         title = unicode(title, parser.charset, "replace").encode(current_charset, "replace")
+            if log: log("   HTTP charset   : %s" % parser.charset)
          if log: log("   current charset: %s" % current_charset)
+         if log: log("   title          : %s" % title)
+         save_title = title
+         try:
+            title = unicode(title, parser.charset).encode(current_charset)
+         except UnicodeError:
+            if parser.meta_charset and parser.charset.endswith("1252") and \
+                  not DEFAULT_CHARSET.endswith("1252") and (DEFAULT_CHARSET <> current_charset):
+               parser.charset = DEFAULT_CHARSET
+               if log: log("   incorrect conversion from cp1252, converting from %s" % DEFAULT_CHARSET)
+               title = unicode(save_title, DEFAULT_CHARSET, "replace").encode(current_charset, "replace")
+            else:
+               title = unicode(title, parser.charset, "replace").encode(current_charset, "replace")
          if log: log("   converted title: %s" % title)
       except LookupError:
          if log: log("   unknown charset: `%s' or `%s'" % (parser.charset, current_charset))