如何在Python脚本中获取终端编码?
假设你想用一些参数来启动一个Python脚本,比如:
python myscript some arguments
我知道,字符串 sys.argv[1]
和 sys.argv[2]
的编码方式是由终端指定的。那么有没有办法在Python脚本内部获取这个信息呢?
我的目标是像这样:
terminal_enocding = some_way.to.GET_TERMINAL_ENCODING
some = `sys.argv[1]`.decode(terminal_encoding)
arguments = `sys.argv[2]`.decode(terminal_encoding)
3 个回答
1
这个函数 locale.getpreferredencoding()
也能完成这个任务。
它会返回一个 Python 的编码字符串,你可以直接这样使用:
>>> import locale
>>> s = b'123\n'
>>> enc = locale.getpreferredencoding()
>>> s.decode(enc)
'123\n'
9
你可以使用 locale.getdefaultlocale()
这个命令,然后取出返回结果中的第二部分。
想了解更多信息,可以查看 这里(这是Fedora的维基页面,解释了Python默认编码的原因和方法)。
27
sys.stdout.encoding
可以告诉你标准输出的编码方式。也就是说,当你在程序中打印东西时,使用的是什么样的字符编码。sys.stdin.encoding
则是用来查看标准输入的编码方式,也就是你在程序中输入内容时,使用的编码是什么。