On 5 September 2016 at 15:59, Steve Dower <steve.do...@python.org> wrote: > +continue to default to ``locale.getpreferredencoding()`` (for text files) or > +plain bytes (for binary files). This only affects the encoding used when > users > +pass a bytes object to Python where it is then passed to the operating > system as > +a path name.
For the three non-filesystem cases: I checked the situation for os.environb, and that's already unavailable on Windows (since os.supports_bytes_environ is False there), while sys.argv is apparently already handled correctly (i.e. always using the *W APIs). That means my only open question would be the handling of subprocess module calls (both with and without shell=True), since that currently works with binary arguments on *nix: >>> subprocess.call([b"python", b"-c", "print('ℙƴ☂ℌøἤ')".encode("utf-8")]) ℙƴ☂ℌøἤ 0 >>> subprocess.call(b"python -c '%s'" % 'print("ℙƴ☂ℌøἤ")'.encode("utf-8"), >>> shell=True) ℙƴ☂ℌøἤ 0 While calling system native apps that way will still have many portability challenges, there are also plenty of cases where folks use sys.executable to launch new Python processes in a separate instance of the currently running interpreter, and it would be good if these changes brought cross-platform consistency to the handling of binary arguments here as well. Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com