Steps to replicate the issue (include links if applicable):
Python:
import requests
requests.get("https://zh.wikipedia.org/w/api.php", params={"prop": "info", "titles": "花鄉東橋站", "action": "query", "format": "json"}).json()
requests.get("https://zh.wikipedia.org/w/api.php", params={"prop": "info", "titles": "汉语", "action": "query", "format": "json"}).json()What happens?:
The former returns JSON indicating the page does not exist (it has the missing key, for instance), even though it definitely does. The latter works - you get a response indicating the page exists, with correct information.
requests doesn't seem to be the issue here; it correctly URL-escapes the unicode characters. You can get the URL it produces and paste it into a browser and the browser bar will show the correct characters. This is the raw URL it produces: https://zh.wikipedia.org/w/api.php?prop=info&titles=%E8%8A%B1%E9%84%89%E6%9D%B1%E6%A9%8B%E7%AB%99&action=query&format=json
What should have happened instead?:
The response should provide correct information on the existing page.
This was reported as a bug in mwclient, but I'm *pretty* sure neither mwclient nor responses is the source of the problem.