python ascii codec cant encode_Python3 出现ascii codec cant encode characters问题

Python3 出现’ascii’ codec can’t encode characters问题。python 3中,使用urllib.request.urlopen打开有中英文或其他小语种 日语之类的链接,一般会出现

发生异常: UnicodeEncodeError

‘ascii’ codec can’t encode characters in position ???: ordinal not in range(128)

如运行如下代码就是会出现ascii code错误。

import urllib.request

url = 'https://search.yahoo.co.jp/search?p=ファッション'

res = urllib.request.urlopen(url)

urllib.request.urlopen不支持中、英文、日语混合的字符串,要转换一下才行。

使用urllib.parse.quote进行转换。

import urllib.request

import urllib.parse

url = 'https://search.yahoo.co.jp/search?p=ファッション'

url_ascii = urllib.parse.quote(url)

res = urllib.request.urlopen(url_ascii)

安全一点,还可以这样写

import string

url_ascii = urllib.parse.quote(url,safe=string.printable)

string.printable这个表示只有可打印字符。

你可能感兴趣的:(python,ascii,codec,cant,encode)