On Tue, 16 Mar 2021 11:44:13 +0900 Inada Naoki songofacandy@gmail.com wrote:
Hi, all.
I found .pth file is decoded by the default (i.e. locale-specific) encoding. https://github.com/python/cpython/blob/0269ce87c9347542c54a653dd78b9f60bb9fa...
pth files contain:
- import statements
- paths
For import statement, UTF-8 is the default Python code encoding. For paths, fsencoding is the right encoding. It is UTF-8 on Windows (excpet PYTHONLEGACYWINDOWSFSENCODING is set), and locale-specific encoding in Linux.
What encoding should we use?
- UTF-8
- sys.getfilesystemencoding()
- Keep status-quo.
You could add special markup to specify utf8 encoding:
# -*- encoding: utf8 -*-
If no markup is present, use locale encoding. If markup is present, use utf8 encoding. Bail out if markup specifies something else than utf8.
Then update all pth-producing tools to write utf8-encoded pth files (at least on the Python versions that support the encoding markup). In 15 years, you can switch to utf8 by default.
Regards
Antoine.