为什么编码没有改变?
Why doesn't the encoding change?
我从页面获取信息,但它的编码方式不适合我:
response = session.post(
url=uri,
headers={
'Accept-Charset': 'utf-8'
}
)
error_message = re.search(r'b-content__red\"\>(.+?)\<', response.text)
正文:
Обратитесь в службу поддержки вашего банка.
然后我尝试转换它:
import cchardet
if error_message:
error_message = error_message.group(1).encode()
encoding = cchardet.detect(error_message)['encoding']
if 'UTF-8' != encoding.upper():
error_message = error_message.decode('utf-8')
但是结果还是一样。我做错了什么?
您需要的是内置 html
模块。
import html
response = session.post(
url=uri,
headers={
'Accept-Charset': 'utf-8'
}
)
error_message = re.search(r'b-content__red\"\>(.+?)\<', response.text)
if error_message:
error_message = html.unescape(error_message.group(1))
print(error_message)
您的方法存在的问题是 .encode()
需要一个有效的字符串 'Обратитесь в службу поддержки вашего банка'.encode()
而 .decode()
需要一个有效的 python 字节串。 b'\xd0\x9e\xd0\xb1\xd1\x80\xd0\xb0\xd1\x82\xd0\xb8\xd1\x82\xd0\xb5\xd1\x81\xd1\x8c'.decode('utf8')
幸运的是,python 提供了一种简单的方法来解析 html 个实体。
我从页面获取信息,但它的编码方式不适合我:
response = session.post(
url=uri,
headers={
'Accept-Charset': 'utf-8'
}
)
error_message = re.search(r'b-content__red\"\>(.+?)\<', response.text)
正文:
Обратитесь в службу поддержки вашего банка.
然后我尝试转换它:
import cchardet
if error_message:
error_message = error_message.group(1).encode()
encoding = cchardet.detect(error_message)['encoding']
if 'UTF-8' != encoding.upper():
error_message = error_message.decode('utf-8')
但是结果还是一样。我做错了什么?
您需要的是内置 html
模块。
import html
response = session.post(
url=uri,
headers={
'Accept-Charset': 'utf-8'
}
)
error_message = re.search(r'b-content__red\"\>(.+?)\<', response.text)
if error_message:
error_message = html.unescape(error_message.group(1))
print(error_message)
您的方法存在的问题是 .encode()
需要一个有效的字符串 'Обратитесь в службу поддержки вашего банка'.encode()
而 .decode()
需要一个有效的 python 字节串。 b'\xd0\x9e\xd0\xb1\xd1\x80\xd0\xb0\xd1\x82\xd0\xb8\xd1\x82\xd0\xb5\xd1\x81\xd1\x8c'.decode('utf8')
幸运的是,python 提供了一种简单的方法来解析 html 个实体。