python encoding_error ai_generated true

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

ID: python/fastapi-unicodedecodeerror-request-body

Also available as: JSON · Markdown · 中文
80%Fix Rate
82%Confidence
0Evidence
2024-10-15First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
3.x active

Root Cause

Request body contains non-UTF-8 encoded data, such as binary or Latin-1.

generic

中文

请求体包含非 UTF-8 编码的数据,例如二进制或 Latin-1。

Workarounds

  1. 85% success Specify encoding when reading request body
    data = await request.body()
    text = data.decode('latin-1')  # or 'utf-8' with errors='replace'
  2. 90% success Use FastAPI's bytes type for raw data
    from fastapi import UploadFile
    @app.post('/upload')
    async def upload(file: UploadFile):
        content = await file.read()
        # handle bytes as needed

Dead Ends

Common approaches that don't work:

  1. Setting app default encoding to latin-1 globally 70% fail

    Breaks other parts expecting UTF-8.

  2. Ignoring errors with errors='ignore' 60% fail

    Data loss can occur.