如何从python脚本中获取终端的编码?

如何从python脚本中获取终端的编码?,python,encoding,terminal,Python,Encoding,Terminal,假设您想用一些参数启动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

假设您想用一些参数启动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)

您可以调用
locale.getdefaultlocale()
并使用元组的第二部分


请参阅更多(Fedora wiki条目解释Python中默认编码的原因和方式)

sys.stdout.encoding
将为您提供标准输出的编码
sys.stdin.encoding
将为您提供标准输入的EncDoy。

函数
locale.getpreferredencoding()
似乎也可以完成此任务

它返回Python编码字符串,您可以像这样直接使用它:

terminal_enocding = some_way.to.GET_TERMINAL_ENCODING
some = `sys.argv[1]`.decode(terminal_encoding)
arguments = `sys.argv[2]`.decode(terminal_encoding)
导入区域设置 >>>s=b'123\n' >>>enc=locale.getpreferredencoding() >>>美国解码(enc) “123\n”