diff --git a/src/app.py b/src/app.py
index b2d9c8bdaf2ba836f417d6e48c795375e9669496..72fae320cdccfa323a7aa4d76c1a0b342479f2a8 100755
--- a/src/app.py
+++ b/src/app.py
@@ -1,5 +1,11 @@
 from flask import Flask, Response, json, jsonify, request
 from flask_cors import CORS
+from urllib.parse import unquote
+import requests
+
+# import sys
+# import codecs
+# sys.stdout = codecs.getwriter('utf-8')(sys.stdout.buffer, 'strict')
 
 import config
 from wiktextract_wrapper import Wiktextract
@@ -28,6 +34,9 @@ def index():
 
 @app.route("/simplesearch/<lang>/<word>", methods=["GET"])
 def search(lang, word):
+    word = requests.utils.unquote(word)
+    word = word.encode('latin-1').decode('utf-8')  # Decode the word from Latin-1 to UTF-8
+    # print(word)
     if lang not in config.supported_wiktlangs:
         return jsonify({"error": f"Language {lang} not supported"}), 400
 
@@ -55,8 +64,11 @@ def search(lang, word):
         if wiktextractor.wxr.thesaurus_db_conn:
             wiktextractor.wxr.thesaurus_db_conn.close()
 
-@app.route("/search/<wiktlang>/<wordlang>/<word>/<format>", methods=["GET"])
+@app.route("/search/<wiktlang>/<wordlang>/<path:word>/<format>", methods=["GET"])
 def search_and_format(wiktlang, wordlang, word, format):
+    word = requests.utils.unquote(word)
+    word = word.encode('latin-1').decode('utf-8')  # Decode the word from Latin-1 to UTF-8
+    # print(word)
     # app.logger.info('Received a request from  /search/<wiktlang>/<wordlang>/<word>/<format>')
     if wiktlang not in config.supported_wiktlangs:
         return jsonify({"error": f"Language {wiktlang} not supported"}), 400
@@ -64,7 +76,7 @@ def search_and_format(wiktlang, wordlang, word, format):
     if len(format)>2 and format[0:2] in ("a_", "A_"):
         ascii = True
         format = format[2:]
-        print(ascii, format)
+        # print(ascii, format)
     else:
         ascii = False
     try: