summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--searx/result_types/_base.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/searx/result_types/_base.py b/searx/result_types/_base.py
index a08675d5f..94a55337c 100644
--- a/searx/result_types/_base.py
+++ b/searx/result_types/_base.py
@@ -52,6 +52,12 @@ def _normalize_url_fields(result: "Result | LegacyResult"):
result.parsed_url = urllib.parse.urlparse(result.url)
if result.parsed_url:
+ # properly format special characters (e.g. "ä", "ö") in IDN domains
+ # e.g. "xn--strung-xxa.de" becomes "störung.de"
+ if result.parsed_url.netloc.startswith("xn--"):
+ netloc = result.parsed_url.netloc.encode().decode("idna")
+ result.parsed_url = result.parsed_url._replace(netloc=netloc)
+
result.parsed_url = result.parsed_url._replace(
# if the result has no scheme, use http as default
scheme=result.parsed_url.scheme or "http",