В вашем случае эта страница содержит неверные данные utf-8, что приводит к путанице в BeautifulSoup и заставляет думать, что на вашей странице используется windows-1252, вы можете сделать этот трюк:
soup = BeautifulSoup.BeautifulSoup(content.decode('utf-8','ignore'))
, выполнив это, вы откажетесьлюбые неправильные символы из исходного кода и BeautifulSoup будут правильно угадывать кодировку.
Вы можете заменить «игнорировать» на «заменить» и проверить текст на «?»символы, чтобы увидеть, что было отброшено.
На самом деле это очень сложная задача - написать сканер, который может каждый раз угадывать кодировку страницы с вероятностью 100% (в настоящее время браузеры очень хороши в этом), вы можете использовать такие модули, как 'chardet ', но, например, в вашем случае он будет угадывать кодировку как ISO-8859-2, что тоже не правильно.
Если вам действительно нужно иметь возможность получить кодировку для любой страницы, которую пользователь может предоставить- вам следует либо создать многоуровневую (попробуйте utf-8, попробуйте latin1, try и т. д.) функцию обнаружения (как мы это делали в нашем проекте), либо использовать некоторый код обнаружения из firefox или chromium в качестве модуля C.