Я знаю, что этот тип вопроса был избит до смерти. Я читал все, что мог найти, я понимаю проблему (или, по крайней мере, думаю, что знаю), и я до сих пор не могу понять, что здесь происходит. Эта проблема повторяется и сводит меня с ума.Кодирующий ад - u2019 не будет отображаться
Одним из примеров является выскабливание федеральных праздников от: https://www.opm.gov/policy-data-oversight/snow-dismissal-procedures/federal-holidays/'
Если я пытаюсь напечатать текст таблицы данных, возвышенные дроссели (не выход), и PowerShell дает мне ошибку кодирования (не может кодировать \ 2019 - который является правильным апострофом). Заголовки на веб-сайте говорят, что UTF-8, который запрашивает правильное определение и использование в качестве кодировки (requests.get(url).encoding
), так что я немного не понимаю. Хотя я могу понять, что PowerShell терпит неудачу, поскольку он использует более узкий стандарт Unicode (cp437 IIRC), я не понимаю, как возвышенное отображение не выводится, поскольку оно по умолчанию используется для UTF-8 afaik.
Вот простой простой пример, где base_url является основным URL, указанным выше (или любым последующим годом после того, как вы находитесь на исходной странице). FWIW У меня эти проблемы почти исключительно на Windows, которые я должен использовать для работы.
def get_year(url):
source = requests.get(url,proxies=proxies)
doc = html.fromstring(source.text)
td=doc.xpath('//td/text()')
return td
print(get_year(base_url))
Вы правы, что-нибудь кодировка UTF-8 должна всегда удается. Можете ли вы показать полный стек ошибок? –
Вы пытались изменить кодировку ответа на запрос? то есть 'source.encoding = 'utf-8'' –
Если вы кодируете строку самостоятельно, вы можете установить политики« игнорировать »или« заменить ». Я не знаю, как изменить кодировщик для 'print', но (скорее всего, хромым, но функциональным) решением может быть' print (get_year (base_url) .encode (sys.stdout.encoding, errors = 'replace'). Decode (sys.stdout.encoding)) '. – tdelaney