adapted from https://github.com/jarun/buku/pull/605 --- a/buku +++ b/buku @@ -19,10 +19,10 @@ import argparse import calendar -import cgi import codecs import collections import contextlib +import email.message import json import locale import logging @@ -3811,15 +3811,17 @@ if soup.meta and soup.meta.get('charset') is not None: charset = soup.meta.get('charset') elif 'content-type' in resp.headers: - _, params = cgi.parse_header(resp.headers['content-type']) - if params.get('charset') is not None: - charset = params.get('charset') + m = email.message.Message() + m['content-type'] = resp.headers['content-type'] + if m.get_param('charset') is not None: + charset = m.get_param('charset') if not charset and soup: meta_tag = soup.find('meta', attrs={'http-equiv': 'Content-Type'}) if meta_tag: - _, params = cgi.parse_header(meta_tag.attrs['content']) - charset = params.get('charset', charset) + m = email.message.Message() + m['content'] = meta_tag.attrs['content'] + charset = m.get_param('charset', charset) if charset: LOGDBG('charset: %s', charset)