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

时间:2011-06-18 14:24:57

标签: 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[2]`.decode(terminal_encoding)

3 个答案:

答案 0 :(得分:21)

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

答案 1 :(得分:8)

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

查看更多here(Fedora wiki条目,解释为什么以及Python中默认编码的方式)

答案 2 :(得分:0)

函数locale.getpreferredencoding()似乎也能完成任务。

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

>>> import locale
>>> s = b'123\n'
>>> enc = locale.getpreferredencoding()
>>> s.decode(enc)
'123\n'