如何获取本地计算机当前使用的代码页?

问题描述 投票:0回答:1

在 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 库中是否有等效的库,无需生成子进程、读取标准输出并解析结果字符串...

python codepages
1个回答
4
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.