Set encodings when reading config files#2996
Merged
Kludex merged 14 commits intoKludex:mainfrom Oct 26, 2025
Merged
Conversation
Fixes UnicodeDecodeError by trying utf-8, euc-kr, gbk, cp949, latin1 encodings sequentially until successful decode.
…simplify file reading logic
Owner
|
Hi @secrett2633 , Thanks for the sponsorship! :) |
Kludex
reviewed
Sep 6, 2025
Owner
Kludex
left a comment
There was a problem hiding this comment.
This doesn't seem all that is needed.
I guess we need to pass encoding from the Config class, otherwise this can't ever be different.
Although, I'm inclined to suggest users to use PYTHONUTF8=1 on their environment.
Contributor
Author
|
Thanks! Happy to help. 😊 @Kludex You're right that without passing encoding from the I've adjusted the implementation based on that feedback. |
Kludex
reviewed
Sep 20, 2025
Kludex
approved these changes
Oct 26, 2025
nixroxursox
pushed a commit
to nixroxursox/starlette
that referenced
this pull request
Nov 3, 2025
Co-authored-by: Marcelo Trylesinski <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes UnicodeDecodeError by allowing explicit encoding selection when reading .env files.
Resolves #2016
Description
Modified the _read_file method in starlette/config.py to accept an encoding parameter.
This ensures .env files can be correctly decoded regardless of the system's default locale encoding.
Key changes:
Motivation
The current implementation uses open(file_name) without specifying an encoding, which defaults to the system’s locale (e.g., GBK on Windows in Chinese locales).
This leads to UnicodeDecodeError when the .env file is encoded in UTF-8 (a common format).
Expected Outcome
After this fix:
Checklist