Hello,
you can fetch this URL with scrapy shell and check the response encoding:
2016-08-31 15:05:58 [scrapy] INFO: Scrapy 1.1.2 started (bot: scrapybot)
(...
(...)
In [1]: response.encoding
Out[1]: 'gb18030'
Note: in the examples below, I'm using Python 3.5
You can also verify the encoding of the URL using parse_qs[1] (in Python3 you can pass the encoding)
In [2]: from urllib.parse import parse_qs
In [3]: parse_qs('q1=%C0%EF&q2=&q3=&q4=', encoding='gb18030')
Out[3]: {'q1': ['里']}
When building Requests objects, when you build your URLs with Chinese characters
you'll need to either pass safe URL strings with gb18030 encoding (here I pass the same 里 4 times (this is just an example obvisouly),
In [4]: from w3lib.url import safe_url_string
In [5]: safe_url_string('http://chengyu.t086.com/chaxun.php?q1=%C0%EF&q2=里&q3=里&q4=里', encoding=response.encoding)
In [6]: from scrapy import Request
or pass the encoding parameter to the Request constructor, otherwise, UTF-8 is used for query parameters before percent-escaping:
In [9]: Request('http://chengyu.t086.com/chaxun.php?q1=里&q2=里')
In [10]: Request('http://chengyu.t086.com/chaxun.php?q1=里&q2=里', encoding='gb18030')
Hope it helps.
Regards,
Paul.