Skip to content

Conversation

@f213
Copy link
Member

@f213 f213 commented Dec 17, 2025

Оказывается питон по-умолчанию до сих пор открывает файлы в ascii, если в системе не указана локаль. Это приводит к тому, что код падает, когда работает с любыми русскими буквами, если их прочитали с файла на диске.

Задал дефолтную локаль в системе, а заодно прописал переменную окружения PYTHONUTF8 из PEP-540. В моём кейсе она одна почему-то не помогла, но думаю что всё равно лучше оставить это в поставке для будущих поколений.

@f213 f213 requested review from kazqvaizer and nkiryanov December 17, 2025 12:16
Copy link
Contributor

@nkiryanov nkiryanov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Оказывается питон по-умолчанию до сих пор открывает файлы в ascii, если в системе не указана локаль

Офигеть, буду знать 😳

@kazqvaizer
Copy link
Contributor

@f213 а как выглядит это в реальности, на каком этапе запуска джанги нужно читать файл с русскими буквами? Очень интересно, т.к. ниразу не сталкивался.

@f213
Copy link
Member Author

f213 commented Dec 18, 2025

У меня есть вот такой код. Он нормально отрабатывает у меня на тачке и в CI, но падает на проде c UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128).

Я сначала думал, что провалился в двухтысячные и уже собрался бежать за долларом по 30, но потом добавил переменные окружения и всё прошло.

@f213 f213 merged commit d633637 into master Dec 18, 2025
3 checks passed
@f213 f213 deleted the utf-8-fix branch December 18, 2025 07:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants