Python Quiz: post #2584 — TG.ME

PEP 686: Python 3.15 переводит open() на UTF-8 везде

PEP 686 наконец добрался до релиза: с 3.15 open() по умолчанию читает и пишет в UTF-8 — везде, а не только там, где повезло с локалью.

Раньше open("f.txt").encoding на Windows мог тихо оказаться cp1252, а на Linux — utf-8. Один и тот же код, разный результат, никакого предупреждения об этом.

Откат есть: PYTHONUTF8=0 вернёт старое поведение. Но чинить лучше через -W error::EncodingWarning — он показывает каждое место, где раньше молчаливо подставлялась локаль.

На линуксе я разницы вообще не замечу — там и так почти всегда был UTF-8. А вот у знакомых с Windows-продакшеном это повод прогнать код с этим флагом по CI до октября, пока не выкатили финал.

Бонус: доки на docs.python.org до сих пор в паре мест пишут «encoding is locale-dependent» — issue #148603 висит открытым.

🔗 peps.python.org, docs.python.org, github.com
August 10, 2026 16