【问题标题】:Handling the output which contains chinese characters处理包含中文字符的输出
【发布时间】:2015-04-09 03:05:37
【问题描述】:

我在 Windows 操作系统上使用一个命令(powershell qwinsta),它返回活动会话。输出包含中文字符(用于用户名)。我必须验证那个中文用户名。但是我该如何处理那个中文用户名呢?如果我将输出写入控制台,它会显示问号,如果我将输出(结果)重定向到文本文件,那么它也会将问号写入文件(对于中文字符)。如何处理?

【问题讨论】:

    标签: unicode chinese-locale


    【解决方案1】:

    一种选择是将用于非 Unicode 程序的语言更改为中文。在 Windows 7 上,转到:控制面板、区域和语言、管理、更改系统区域设置并将其更改为适当的中文设置。重启,控制台就支持中文了。

    另一种选择是将输出重定向到 Powershell 中的文件,该文件以 UTF-16 格式写入文件:

    C:\>powershell
    Windows PowerShell
    Copyright (C) 2009 Microsoft Corporation. All rights reserved.
    
    PS C:\> qwinsta > out.txt
    PS C:\> notepad out.txt
    

    【讨论】:

    • 第一个选项不适合我的情况,所以,我没有尝试。我尝试了第二种情况,但它不起作用。
    • @user1423015,我刚从 powershell qwinsta > out.txt 运行,输出文件默认以 UTF-16 编码。只需使用记事本打开文件,它应该可以正确显示内容。您的默认控制台字体可能不支持中文。
    • 我的控制台支持 Lucida Console、Consolas 和 Raster Fonts。我尝试了所有这些但没有运气。您使用了哪种控制台字体?你是怎么知道的?
    • 我没有在控制台上打印。我跑了powershellqwinsta > out.txtnotepad out.txt。控制台仅支持有限的 OEM 字符集,在美国版 Windows 上通常为 code page 437,除非您像我在答案中提到的那样更改用于非 Unicode 程序的语言。
    猜你喜欢
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多