【发布时间】:2015-04-09 03:05:37
【问题描述】:
我在 Windows 操作系统上使用一个命令(powershell qwinsta),它返回活动会话。输出包含中文字符(用于用户名)。我必须验证那个中文用户名。但是我该如何处理那个中文用户名呢?如果我将输出写入控制台,它会显示问号,如果我将输出(结果)重定向到文本文件,那么它也会将问号写入文件(对于中文字符)。如何处理?
【问题讨论】:
我在 Windows 操作系统上使用一个命令(powershell qwinsta),它返回活动会话。输出包含中文字符(用于用户名)。我必须验证那个中文用户名。但是我该如何处理那个中文用户名呢?如果我将输出写入控制台,它会显示问号,如果我将输出(结果)重定向到文本文件,那么它也会将问号写入文件(对于中文字符)。如何处理?
【问题讨论】:
一种选择是将用于非 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
【讨论】:
qwinsta > out.txt 运行,输出文件默认以 UTF-16 编码。只需使用记事本打开文件,它应该可以正确显示内容。您的默认控制台字体可能不支持中文。
powershell,qwinsta > out.txt,notepad out.txt。控制台仅支持有限的 OEM 字符集,在美国版 Windows 上通常为 code page 437,除非您像我在答案中提到的那样更改用于非 Unicode 程序的语言。