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
