diff --git a/src/jira_hub/api.py b/src/jira_hub/api.py
index 080b978..25b364d 100644
--- a/src/jira_hub/api.py
+++ b/src/jira_hub/api.py
@@ -31,7 +31,7 @@ ASSET_CACHE = {"Cache-Control": "public, max-age=31536000, immutable"} # им
NOT_BUILT = ("
Хаб JiraВеб-приложение не собрано: выполните "
"make web в каталоге jira-hub и перезапустите хаб.
").encode("utf-8")
SOCKET_TIMEOUT = 60 # чтение запроса; ожидание долгого claim идёт уже после чтения тела и сокет не держит
-MIME_RE = re.compile(r"[\w!#$&^.+-]+/[\w!#$&^.+-]+") # тип/подтип без параметров и пробелов: заголовок не внушить
+MIME_RE = re.compile(r"[\w!#$&^.+-]+/[\w!#$&^.+-]+", re.ASCII) # тип/подтип без параметров, пробелов и не-ASCII: заголовок не внушить
SWEEP_EVERY = 24 * 3600 # уборка files/ не чаще раза в сутки (hub-api «Хранилище файлов вложений»)
diff --git a/tests/test_api.py b/tests/test_api.py
index 932fe32..59c234a 100644
--- a/tests/test_api.py
+++ b/tests/test_api.py
@@ -1130,6 +1130,13 @@ def test_attachment_content_bad_mime(hub):
assert _content(hub, "/attachments/31337/content").headers["Content-Type"] == "application/octet-stream"
+def test_attachment_content_non_ascii_mime(hub):
+ """Кириллический mime_type не должен ронять send_header (UnicodeEncodeError → 500): \w в MIME_RE — только ASCII."""
+ _seed_attachment(hub, mime="текст/простой")
+ _fetch_done(hub)
+ assert _content(hub, "/attachments/31337/content").headers["Content-Type"] == "application/octet-stream"
+
+
def test_attachment_fetch_twice_same_command(hub):
_seed_attachment(hub)
a = hub["client"].post("/attachments/31337/fetch", {})