Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UnicodeEncodeError: 'latin-1' codec can't encode character '\u0119' in position 61: ordinal not in range(256) #187

Open
ordigital opened this issue Jan 13, 2024 · 2 comments

Comments

@ordigital
Copy link

ordigital commented Jan 13, 2024

Error 500 after using /asr endpoint with polish language.

[2024-01-13 14:33:35 +0000] [28] [ERROR] Exception in ASGI application
Traceback (most recent call last):
  File "/app/.venv/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
  File "/app/.venv/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in __call__
    return await self.app(scope, receive, send)
  File "/app/.venv/lib/python3.10/site-packages/fastapi/applications.py", line 1106, in __call__
    await super().__call__(scope, receive, send)
  File "/app/.venv/lib/python3.10/site-packages/starlette/applications.py", line 122, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/app/.venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in __call__
    raise exc
  File "/app/.venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in __call__
    await self.app(scope, receive, _send)
  File "/app/.venv/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
    raise exc
  File "/app/.venv/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
    await self.app(scope, receive, sender)
  File "/app/.venv/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in __call__
    raise e
  File "/app/.venv/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in __call__
    await self.app(scope, receive, send)
  File "/app/.venv/lib/python3.10/site-packages/starlette/routing.py", line 718, in __call__
    await route.handle(scope, receive, send)
  File "/app/.venv/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
    await self.app(scope, receive, send)
  File "/app/.venv/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
    response = await func(request)
  File "/app/.venv/lib/python3.10/site-packages/fastapi/routing.py", line 274, in app
    raw_response = await run_endpoint_function(
  File "/app/.venv/lib/python3.10/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
    return await dependant.call(**values)
  File "/app/app/webservice.py", line 76, in asr
    return StreamingResponse(
  File "/app/.venv/lib/python3.10/site-packages/starlette/responses.py", line 246, in __init__
    self.init_headers(headers)
  File "/app/.venv/lib/python3.10/site-packages/starlette/responses.py", line 73, in init_headers
    raw_headers = [
  File "/app/.venv/lib/python3.10/site-packages/starlette/responses.py", line 74, in <listcomp>
    (k.lower().encode("latin-1"), v.encode("latin-1"))
UnicodeEncodeError: 'latin-1' codec can't encode character '\u0119' in position 61: ordinal not in range(256)

Solution

Seems to be scarlette's problem with encoding headers in latin-1 instead of utf-8: encode/starlette#790

It can ber solved by adding new version of starlette to pip install in Dockerfile:

    && $POETRY_VENV/bin/pip install fastapi==0.109.0 --no-deps \
    && $POETRY_VENV/bin/pip install starlette==0.35.1 --no-deps

Requirements for whisper-asr-webservice should be updated with those packages versions.

@disconnect5852
Copy link

same here:

[2024-01-15 19:19:22 +0000] [7] [ERROR] Exception in ASGI application
Traceback (most recent call last):
  File "/app/.venv/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
  File "/app/.venv/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in __call__
    return await self.app(scope, receive, send)
  File "/app/.venv/lib/python3.10/site-packages/fastapi/applications.py", line 1106, in __call__
    await super().__call__(scope, receive, send)
  File "/app/.venv/lib/python3.10/site-packages/starlette/applications.py", line 122, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/app/.venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in __call__
    raise exc
  File "/app/.venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in __call__
    await self.app(scope, receive, _send)
  File "/app/.venv/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
    raise exc
  File "/app/.venv/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
    await self.app(scope, receive, sender)
  File "/app/.venv/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in __call__
    raise e
  File "/app/.venv/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in __call__
    await self.app(scope, receive, send)
  File "/app/.venv/lib/python3.10/site-packages/starlette/routing.py", line 718, in __call__
    await route.handle(scope, receive, send)
  File "/app/.venv/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
    await self.app(scope, receive, send)
  File "/app/.venv/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
    response = await func(request)
  File "/app/.venv/lib/python3.10/site-packages/fastapi/routing.py", line 274, in app
    raw_response = await run_endpoint_function(
  File "/app/.venv/lib/python3.10/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
    return await dependant.call(**values)
  File "/app/app/webservice.py", line 76, in asr
    return StreamingResponse(
  File "/app/.venv/lib/python3.10/site-packages/starlette/responses.py", line 246, in __init__
    self.init_headers(headers)
  File "/app/.venv/lib/python3.10/site-packages/starlette/responses.py", line 73, in init_headers
    raw_headers = [
  File "/app/.venv/lib/python3.10/site-packages/starlette/responses.py", line 74, in <listcomp>
    (k.lower().encode("latin-1"), v.encode("latin-1"))
UnicodeEncodeError: 'latin-1' codec can't encode character '\u0171' in position 51: ordinal not in range(256)

@livehl
Copy link

livehl commented Jan 25, 2024

文件名不要包含中文。把文件名改成英文即可。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants