如果我构建一个准系统,它运行良好。但是在我的实际代码中,我收到了与 Unicode 相关的错误。
temp_url = "http://search.jd.com/Search?keyword=" + quote(self.keywords)
File "/usr/lib/python3.5/urllib/parse.py", line 706, in quote string = string.encode(encoding, errors)
UnicodeEncodeError: 'utf-8' codec can't encode character '\udce8' in position 0: surrogates not allowed
我正在使用一个参数将我的搜索字符串传递给 Scrapy (1.4):
scrapy crawl jdspider -a keywords="电灯"
相关代码如下:
# -*- coding: utf-8 -*-
import scrapy, re
from urllib.parse import quote
def __init__(self, keywords=''):
self.keywords = keywords.strip()
temp_url = "http://search.jd.com/Search?keyword=" + quote(self.keywords)
print ( temp_url )
所以打印甚至不会被执行 - 某事。不适用于 quote 方法。
python 3.5.2 碎片化 1.4.0 Ubuntu 16.04
我做错了什么?
最佳答案
当您使用中文或任何其他语言的字符或符号时,这类问题很常见。
尝试使用 utf-8 以外的任何其他应用编码器对字符串进行编码。
https://docs.python.org/3/library/codecs.html#standard-encodings
但是,第一个问题,删除这个字符是否会使信息变得无用或者可能在某些方面不再那么有用。
如果这不是问题,请尝试删除该角色。 它似乎是字符串中的第一个字符。
使用 Try 和 Except 来捕获异常
然后
-- 删除第一个字符
或更好
使用 for 循环检查每个字符并删除您无法编码的字符。
关于python-3.x - 从命令行参数到 Python 3 中的 URL 的 Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44484201/