Python 中字符串的一些解码问题
Some Decoding Issue With String in Python
我正在尝试将 Google 中的 HTML 代码字符串写入 Python 3.4
中的文件
#coding=utf-8
try:
from urllib.request import Request, urlopen # Python 3
except:
from urllib2 import Request, urlopen # Python 2
useragent = 'Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0'
#Generate URL
url = 'https://www.google.com.tw/search?q='
query = str(input('Google It! :'))
full_url = url+query
#Request Data
data = Request(full_url)
data.add_header('User-Agent', useragent)
dataRequested = urlopen(data).read()
dataRequested = str(dataRequested.decode('utf-8'))
print(dataRequested)
#Write Data Into File
file = open('Google - '+query+'.html', 'w')
file.write(dataRequested)
可以正确打印字符串,
但是当它写入文件时,
它将显示
file.write(dataRequested)
UnicodeEncodeError: 'cp950' codec can't encode character '\u200e' in position 97658: illegal multibyte sequence
我尝试更改解码方式,但没有用。
我也尝试替换 \u200e,但它会出现更多编码字符错误。
你的问题是
dataRequested = str(dataRequested.decode('utf-8'))
是否有理由将解码后的 UTF-8 转换为字符串?但这还不是全部。当您从 Internet 获得一个字符串时,它应该被解码,但是当您保存该字符串时,它应该被编码。有些人不明白。他们要么解码要么编码。这样不行。
我稍微修改了你的代码。它在 Python2.7 和 Python3.4.
上对我来说都很好
dataRequested = dataRequested.decode('utf-8')
print(dataRequested)
#Write Data Into File
file = open('Google - '+query+'.html', 'wb')
file.write(dataRequested.encode('utf-8'))
我正在尝试将 Google 中的 HTML 代码字符串写入 Python 3.4
中的文件#coding=utf-8
try:
from urllib.request import Request, urlopen # Python 3
except:
from urllib2 import Request, urlopen # Python 2
useragent = 'Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0'
#Generate URL
url = 'https://www.google.com.tw/search?q='
query = str(input('Google It! :'))
full_url = url+query
#Request Data
data = Request(full_url)
data.add_header('User-Agent', useragent)
dataRequested = urlopen(data).read()
dataRequested = str(dataRequested.decode('utf-8'))
print(dataRequested)
#Write Data Into File
file = open('Google - '+query+'.html', 'w')
file.write(dataRequested)
可以正确打印字符串, 但是当它写入文件时, 它将显示
file.write(dataRequested)
UnicodeEncodeError: 'cp950' codec can't encode character '\u200e' in position 97658: illegal multibyte sequence
我尝试更改解码方式,但没有用。 我也尝试替换 \u200e,但它会出现更多编码字符错误。
你的问题是
dataRequested = str(dataRequested.decode('utf-8'))
是否有理由将解码后的 UTF-8 转换为字符串?但这还不是全部。当您从 Internet 获得一个字符串时,它应该被解码,但是当您保存该字符串时,它应该被编码。有些人不明白。他们要么解码要么编码。这样不行。
我稍微修改了你的代码。它在 Python2.7 和 Python3.4.
上对我来说都很好dataRequested = dataRequested.decode('utf-8')
print(dataRequested)
#Write Data Into File
file = open('Google - '+query+'.html', 'wb')
file.write(dataRequested.encode('utf-8'))