UnicodeDecodeError: codec can't decode
This error matches known, documented patterns with reliable solutions.
Quick Fix (Most Common Solution)
- Try different encodings like latin-1
- Open file with correct encoding
Seeing "UnicodeDecodeError: codec can't decode"? This error can be frustrating, but it's usually fixable. It typically affects your development workflow or system. Below you'll find clear, step-by-step solutions to resolve this issue.
What This Error Means
Python cannot interpret the bytes using the specified encoding.
Frequently documented in developer and vendor support forums.
Not affiliated with browser, OS, or device manufacturers.
New here? Learn why exact error messages matter →
Common Causes
- Wrong encoding specified
- Binary file opened as text
- Mixed encodings in file
How to Fix
- Try different encodings like latin-1
- Open file with correct encoding
- Open as binary mode if needed
Last reviewed: April 2026 How we review solutions
OS-Specific Behavior
Windows cp1252 Default Encoding vs UTF-8: The Cross-Platform Text Trap
open('file.txt') without an encoding parameter, Python uses locale.getpreferredencoding(False) — which returns cp1252 on most Windows systems and UTF-8 on Linux/macOS.
A UTF-8 file containing the em-dash (—), smart quotes (" "), or other characters above ASCII 127 that are undefined in cp1252 triggers UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position N. The file is perfectly valid UTF-8 but the Windows default codec cannot handle it.
Always specify encoding='utf-8' explicitly: open('file.txt', encoding='utf-8') is fully portable. Python 3.15 (planned 2025) changes the default encoding behavior, but until then explicit encoding is required.
For files with unknown or mixed encodings, the chardet library detects the encoding from the file's bytes: chardet.detect(Path('file.txt').read_bytes()) returns a confidence score and detected encoding name. For CSV files specifically, pandas.read_csv('file.csv', encoding='utf-8-sig') handles the UTF-8 BOM (byte order mark) that Excel prepends when saving CSV files, which causes UnicodeDecodeError in standard UTF-8 mode because the BOM byte sequence is not valid UTF-8 without the BOM variant.Optional follow-up
Some users ask whether saving fixes for recurring errors would be useful when the same issue appears again.
Was this explanation helpful?
Frequently Asked Questions
What encoding should I use?
UTF-8 is most common. Try chardet module to detect encoding.
How do I handle encoding errors?
Use errors="ignore" or errors="replace" in open().
Related Resources
Also Known As
- Python exception
- Python traceback
- Python runtime error
- Python crash
Common Search Variations
- "python error fix"
- "python script not working"
- "python traceback what does it mean"
- "how to fix python exception"
- "python crash on startup"
- "python import error solution"
Related Errors
Still Stuck?
Paste a different error message or upload a screenshot to get help instantly.