We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Startpage engine doesn't support russian queries



--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `searx/engines/startpage.py`
Content:
```
1 #  Startpage (Web)
2 #
3 # @website     https://startpage.com
4 # @provide-api no (nothing found)
5 #
6 # @using-api   no
7 # @results     HTML
8 # @stable      no (HTML can change)
9 # @parse       url, title, content
10 #
11 # @todo        paging
12 
13 from urllib import urlencode
14 from lxml import html
15 from cgi import escape
16 import re
17 
18 # engine dependent config
19 categories = ['general']
20 # there is a mechanism to block "bot" search
21 # (probably the parameter qid), require
22 # storing of qid's between mulitble search-calls
23 
24 # paging = False
25 language_support = True
26 
27 # search-url
28 base_url = 'https://startpage.com/'
29 search_url = base_url + 'do/search'
30 
31 # specific xpath variables
32 # ads xpath //div[@id="results"]/div[@id="sponsored"]//div[@class="result"]
33 # not ads: div[@class="result"] are the direct childs of div[@id="results"]
34 results_xpath = '//div[@class="result"]'
35 link_xpath = './/h3/a'
36 
37 
38 # do search-request
39 def request(query, params):
40     offset = (params['pageno'] - 1) * 10
41     query = urlencode({'q': query})[2:]
42 
43     params['url'] = search_url
44     params['method'] = 'POST'
45     params['data'] = {'query': query,
46                       'startat': offset}
47 
48     # set language if specified
49     if params['language'] != 'all':
50         params['data']['with_language'] = ('lang_' +
51                                            params['language'].split('_')[0])
52 
53     return params
54 
55 
56 # get response from search-request
57 def response(resp):
58     results = []
59 
60     dom = html.fromstring(resp.content)
61 
62     # parse results
63     for result in dom.xpath(results_xpath):
64         links = result.xpath(link_xpath)
65         if not links:
66             continue
67         link = links[0]
68         url = link.attrib.get('href')
69         try:
70             title = escape(link.text_content())
71         except UnicodeDecodeError:
72             continue
73 
74         # block google-ad url's
75         if re.match("^http(s|)://www.google.[a-z]+/aclk.*$", url):
76             continue
77 
78         if result.xpath('./p[@class="desc"]'):
79             content = escape(result.xpath('./p[@class="desc"]')[0]
80                              .text_content())
81         else:
82             content = ''
83 
84         # append result
85         results.append({'url': url,
86                         'title': title,
87                         'content': content})
88 
89     # return results
90     return results
91
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/searx/engines/startpage.py b/searx/engines/startpage.py
--- a/searx/engines/startpage.py
+++ b/searx/engines/startpage.py
@@ -10,7 +10,6 @@
 #
 # @todo        paging
 
-from urllib import urlencode
 from lxml import html
 from cgi import escape
 import re
@@ -38,7 +37,6 @@
 # do search-request
 def request(query, params):
     offset = (params['pageno'] - 1) * 10
-    query = urlencode({'q': query})[2:]
 
     params['url'] = search_url
     params['method'] = 'POST'

{"golden_diff": "diff --git a/searx/engines/startpage.py b/searx/engines/startpage.py\n--- a/searx/engines/startpage.py\n+++ b/searx/engines/startpage.py\n@@ -10,7 +10,6 @@\n #\n # @todo        paging\n \n-from urllib import urlencode\n from lxml import html\n from cgi import escape\n import re\n@@ -38,7 +37,6 @@\n # do search-request\n def request(query, params):\n     offset = (params['pageno'] - 1) * 10\n-    query = urlencode({'q': query})[2:]\n \n     params['url'] = search_url\n     params['method'] = 'POST'\n", "issue": "Startpage engine doesn't support russian queries\n\r\n\n", "before_files": [{"content": "#  Startpage (Web)\n#\n# @website     https://startpage.com\n# @provide-api no (nothing found)\n#\n# @using-api   no\n# @results     HTML\n# @stable      no (HTML can change)\n# @parse       url, title, content\n#\n# @todo        paging\n\nfrom urllib import urlencode\nfrom lxml import html\nfrom cgi import escape\nimport re\n\n# engine dependent config\ncategories = ['general']\n# there is a mechanism to block \"bot\" search\n# (probably the parameter qid), require\n# storing of qid's between mulitble search-calls\n\n# paging = False\nlanguage_support = True\n\n# search-url\nbase_url = 'https://startpage.com/'\nsearch_url = base_url + 'do/search'\n\n# specific xpath variables\n# ads xpath //div[@id=\"results\"]/div[@id=\"sponsored\"]//div[@class=\"result\"]\n# not ads: div[@class=\"result\"] are the direct childs of div[@id=\"results\"]\nresults_xpath = '//div[@class=\"result\"]'\nlink_xpath = './/h3/a'\n\n\n# do search-request\ndef request(query, params):\n    offset = (params['pageno'] - 1) * 10\n    query = urlencode({'q': query})[2:]\n\n    params['url'] = search_url\n    params['method'] = 'POST'\n    params['data'] = {'query': query,\n                      'startat': offset}\n\n    # set language if specified\n    if params['language'] != 'all':\n        params['data']['with_language'] = ('lang_' +\n                                           params['language'].split('_')[0])\n\n    return params\n\n\n# get response from search-request\ndef response(resp):\n    results = []\n\n    dom = html.fromstring(resp.content)\n\n    # parse results\n    for result in dom.xpath(results_xpath):\n        links = result.xpath(link_xpath)\n        if not links:\n            continue\n        link = links[0]\n        url = link.attrib.get('href')\n        try:\n            title = escape(link.text_content())\n        except UnicodeDecodeError:\n            continue\n\n        # block google-ad url's\n        if re.match(\"^http(s|)://www.google.[a-z]+/aclk.*$\", url):\n            continue\n\n        if result.xpath('./p[@class=\"desc\"]'):\n            content = escape(result.xpath('./p[@class=\"desc\"]')[0]\n                             .text_content())\n        else:\n            content = ''\n\n        # append result\n        results.append({'url': url,\n                        'title': title,\n                        'content': content})\n\n    # return results\n    return results\n", "path": "searx/engines/startpage.py"}], "after_files": [{"content": "#  Startpage (Web)\n#\n# @website     https://startpage.com\n# @provide-api no (nothing found)\n#\n# @using-api   no\n# @results     HTML\n# @stable      no (HTML can change)\n# @parse       url, title, content\n#\n# @todo        paging\n\nfrom lxml import html\nfrom cgi import escape\nimport re\n\n# engine dependent config\ncategories = ['general']\n# there is a mechanism to block \"bot\" search\n# (probably the parameter qid), require\n# storing of qid's between mulitble search-calls\n\n# paging = False\nlanguage_support = True\n\n# search-url\nbase_url = 'https://startpage.com/'\nsearch_url = base_url + 'do/search'\n\n# specific xpath variables\n# ads xpath //div[@id=\"results\"]/div[@id=\"sponsored\"]//div[@class=\"result\"]\n# not ads: div[@class=\"result\"] are the direct childs of div[@id=\"results\"]\nresults_xpath = '//div[@class=\"result\"]'\nlink_xpath = './/h3/a'\n\n\n# do search-request\ndef request(query, params):\n    offset = (params['pageno'] - 1) * 10\n\n    params['url'] = search_url\n    params['method'] = 'POST'\n    params['data'] = {'query': query,\n                      'startat': offset}\n\n    # set language if specified\n    if params['language'] != 'all':\n        params['data']['with_language'] = ('lang_' +\n                                           params['language'].split('_')[0])\n\n    return params\n\n\n# get response from search-request\ndef response(resp):\n    results = []\n\n    dom = html.fromstring(resp.content)\n\n    # parse results\n    for result in dom.xpath(results_xpath):\n        links = result.xpath(link_xpath)\n        if not links:\n            continue\n        link = links[0]\n        url = link.attrib.get('href')\n        try:\n            title = escape(link.text_content())\n        except UnicodeDecodeError:\n            continue\n\n        # block google-ad url's\n        if re.match(\"^http(s|)://www.google.[a-z]+/aclk.*$\", url):\n            continue\n\n        if result.xpath('./p[@class=\"desc\"]'):\n            content = escape(result.xpath('./p[@class=\"desc\"]')[0]\n                             .text_content())\n        else:\n            content = ''\n\n        # append result\n        results.append({'url': url,\n                        'title': title,\n                        'content': content})\n\n    # return results\n    return results\n", "path": "searx/engines/startpage.py"}]}