【问题标题】:When using CMD terminal Python can't display Hebrew使用 CMD 终端时 Python 无法显示希伯来语
【发布时间】:2020-06-30 01:58:43
【问题描述】:

我正在尝试在我的代码中使用希伯来语字符。但我的终端(CMD)不支持希伯来语,而是只显示随机问号。 例如:

>>>Print("דוגמא")

结果:?????\

编辑:CMD 控制台在其默认字体中根本没有希伯来字母。您可以简单地更改字体以显示希伯来语。

【问题讨论】:

    标签: python python-3.x cmd character-encoding hebrew


    【解决方案1】:

    这将影响命令 (CMD) 控制台。

    1. 打开 regedit.exe 并导航到此位置:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont

    2. 有时您会看到名为000 的两个值。添加第三个字符串值并将其命名为:000(三次为零)。

    3. 在这个新的000 字符串值中,在值数据字段中输入Courier New(区分大小写)。

    4. 现在打开 Powershell(这也适用于 CMD)并转到 properties:左键单击左上角的 Powershell 图标并选择 properties

    5. 转到Font 选项卡并选择Courier New 字体:

    现在,当您切换到希伯来语写作时,您应该会看到希伯来语(向后视图)。例如,这使您可以从脚本发送输出希伯来语写作。

    【讨论】:

    • # -*- coding: utf-8 -*- 在 Python 3 中不是必需的。
    • 我正在使用 CMD。它不显示非 ascci 字符
    • 感谢您的回答,但是有没有不改变注册表的解决方案?我的意思是使用在许多计算机上编译的这个程序。
    • @TheShwarma:如果终端中的字体不支持希伯来语,则必须更改它。如果您想打印到终端,则没有任何合理的方法。
    • 这对我特别适用于 CMD 窗口,但不适用于 Powershell;我还是得到了??????而不是 PS 中的希伯来字符。
    【解决方案2】:

    我有一个解决方案。 Change console font in Windows 那里有一个代码可以更改字体。我发现它也适用于 CMD 通常不支持的字体。

    根据答案:

    import ctypes
    
    LF_FACESIZE = 32
    STD_OUTPUT_HANDLE = -11
    
    class COORD(ctypes.Structure):
        _fields_ = [("X", ctypes.c_short), ("Y", ctypes.c_short)]
    
    class CONSOLE_FONT_INFOEX(ctypes.Structure):
        _fields_ = [("cbSize", ctypes.c_ulong),
                    ("nFont", ctypes.c_ulong),
                    ("dwFontSize", COORD),
                    ("FontFamily", ctypes.c_uint),
                    ("FontWeight", ctypes.c_uint),
                    ("FaceName", ctypes.c_wchar * LF_FACESIZE)]
    
    font = CONSOLE_FONT_INFOEX()
    font.cbSize = ctypes.sizeof(CONSOLE_FONT_INFOEX)
    font.nFont = 12
    font.dwFontSize.X = 11
    font.dwFontSize.Y = 18
    font.FontFamily = 54
    font.FontWeight = 400
    font.FaceName = "Lucida Console"
    
    handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
    ctypes.windll.kernel32.SetCurrentConsoleFontEx(
            handle, ctypes.c_long(False), ctypes.pointer(font))```
    

    【讨论】:

    • 它仍然没有为我显示希伯来语文本。
    • @bob 您还可以永久更改控制台设置。
    • 这在 cmd 行似乎不起作用......至少对我来说不是。
    • @JonesomeReinstateMonica 还有另一种解决方案。使用 Windows 终端控制台,它现在是一个更好的选择,并且带有很好的字体。
    • @TheShwarma 我正在使用 VS Code 终端,效果很好。
    猜你喜欢
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多