在 Python 3.8 脚本中,我尝试检索我的计算机(操作系统:Windows 10)中当前使用的代码页。
使用
sys.getdefaultencoding()
将返回 Python 中使用的代码页('utf-8'),这与我的计算机使用的代码页不同。
我知道我可以通过从 Windows 控制台发送
chcp
命令来获取此信息:
Microsoft Windows [Version 10.0.18363.1316]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\Users\Me>chcp
Active code page: 850
C:\Users\Me>
想知道 Python 库中是否有等效的库,无需生成子进程、读取标准输出并解析结果字符串...
chcp
命令使用 GetConsoleOutputCP
Windows API 来获取活动控制台代码页的数量。您可以使用 python 调用相同的函数
ctypes
模块(windll.kernel32.GetConsoleOutputCP
)。
>>> from ctypes import windll
>>> import subprocess
>>>
>>> def from_windows_api():
... return windll.kernel32.GetConsoleOutputCP()
...
>>> def from_subprocess():
... result = subprocess.getoutput("chcp")
... return int(result.removeprefix("Active code page: "))
...
>>> from_windows_api() == from_subprocess()
True