如何在Windows命令行中使用unicode字符? 我们在Team Foundation Server(TFS)中有一个项目,里面有一个非英语字符。在尝试编写一些与构建相关的东西时,我们偶然发现了一个问题—我们无法将š字母传递给命令行工具。命令提示符或其他命令会把它搞砸,tf.exe实用程序找不到指定的项目
我尝试了不同格式的.bat文件(ANSI、UTF-8,带和不带),也尝试了用JavaScript编写脚本(本质上是Unicode),但运气不好。如何执行程序并向其传递Unicode命令行?试试:如何在Windows命令行中使用unicode字符? 我们在Team Foundation Server(TFS)中有一个项目,里面有一个非英语字符。在尝试编写一些与构建相关的东西时,我们偶然发现了一个问题—我们无法将š字母传递给命令行工具。命令提示符或其他命令会把它搞砸,tf.exe实用程序找不到指定的项目,unicode,command-line,input,windows-console,Unicode,Command Line,Input,Windows Console,我尝试了不同格式的.bat文件(ANSI、UTF-8,带和不带),也尝试了用JavaScript编写脚本(本质上是Unicode),但运气不好。如何执行程序并向其传递Unicode命令行?试试: chcp 65001 这会将代码页更改为UTF-8。此外,您还需要使用Lucida控制台字体。实际上,诀窍在于命令提示符实际上理解这些非英语字符,只是不能正确显示它们 当我在命令提示符中输入包含一些非英语字符的路径时,它显示为“?”。当您提交命令(我的情况是cd)时,一切都按预期进行。我也有同样的问题
chcp 65001
这会将代码页更改为UTF-8。此外,您还需要使用Lucida控制台字体。实际上,诀窍在于命令提示符实际上理解这些非英语字符,只是不能正确显示它们 当我在命令提示符中输入包含一些非英语字符的路径时,它显示为“?”。当您提交命令(我的情况是cd)时,一切都按预期进行。我也有同样的问题(我来自捷克共和国)。我安装了英文版的Windows,并且我必须在共享驱动器上处理文件。文件的路径包括特定于捷克语的字符 适合我的解决方案是: 在批处理文件中,更改字符集页面 我的批处理文件:
chcp 1250
copy "O:\VEŘEJNÉ\ŽŽŽŽŽŽ\Ž.xls" c:\temp
批处理文件必须保存在CP 1250中
请注意,控制台不会正确显示字符,但会理解它们…对于类似的问题,(我的问题是在命令提示符下显示MySQL中的UTF-8字符)
我是这样解决的:
检查非Unicode程序的语言。如果您在Windows控制台中遇到俄语问题,则应在此处设置俄语:
一个更干净的方法是:只需安装可用的免费Microsoft日语语言包。(其他东方语言包也可以,但我已经测试了日语包。)
这将为您提供具有更大字形集的字体,使其成为默认行为,更改各种Windows工具,如cmd、写字板等。将代码页更改为1252对我来说很有用。我的问题是DOS在Windows Server 2008上将符号double doller§转换为另一个符号
我在BCP语句^§中使用了CHCP 1252及其前面的cap。如果您在DOS窗口中键入路径/文件名时计算机显示的路径/文件名正确,则快速决定.bat文件:
在DOS窗口中执行以这种方式创建的.bat适用于mö(西里尔语,保加利亚语)。很难更改Windows控制台的默认代码页。当你搜索网页时,你会发现不同的建议,但是其中一些可能会完全破坏你的Windows,即你的电脑不再启动 最安全的解决方案是: 转到您的注册表项
HKEY\U CURRENT\U USER\Software\Microsoft\Command Processor
并添加字符串值Autorun
=chcp 65001
或者,您可以将此小批量脚本用于最常见的代码页
@ECHO off
SET ROOT_KEY="HKEY_CURRENT_USER"
FOR /f "skip=2 tokens=3" %%i in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage /v OEMCP') do set OEMCP=%%i
ECHO System default values:
ECHO.
ECHO ...............................................
ECHO Select Codepage
ECHO ...............................................
ECHO.
ECHO 1 - CP1252
ECHO 2 - UTF-8
ECHO 3 - CP850
ECHO 4 - ISO-8859-1
ECHO 5 - ISO-8859-15
ECHO 6 - US-ASCII
ECHO.
ECHO 9 - Reset to System Default (CP%OEMCP%)
ECHO 0 - EXIT
ECHO.
SET /P CP="Select a Codepage: "
if %CP%==1 (
echo Set default Codepage to CP1252
reg add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 1252>nul" /f
) else if %CP%==2 (
echo Set default Codepage to UTF-8
reg add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 65001>nul" /f
) else if %CP%==3 (
echo Set default Codepage to CP850
reg add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 850>nul" /f
) else if %CP%==4 (
echo Set default Codepage to ISO-8859-1
add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 28591>nul" /f
) else if %CP%==5 (
echo Set default Codepage to ISO-8859-15
add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 28605>nul" /f
) else if %CP%==6 (
echo Set default Codepage to ASCII
add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 20127>nul" /f
) else if %CP%==9 (
echo Reset Codepage to System Default
reg delete "%ROOT_KEY%\Software\Microsoft\Command Processor" /v AutoRun /f
) else if %CP%==0 (
echo Bye
) else (
echo Invalid choice
pause
)
使用@chcp 65001>nul
而不是chcp 65001
会抑制每次启动新命令行窗口时获得的输出“活动代码页:65001”
您可以从中获得的所有可用号码的完整列表
注意,这些设置仅适用于当前用户。如果要为所有用户设置它,请将行
set ROOT\u KEY=“HKEY\u CURRENT\u USER”
替换为set ROOT\u KEY=“HKEY\u LOCAL\u MACHINE”
我在批处理文件中通过短(8点3)名称引用Unicode命名的文件,从而避免了类似的问题
可以通过执行
dir/x
查看短名称。显然,这只适用于已知的Unicode文件名。一个非常简单的选项是安装Windows bash shell,如并使用:
由于您需要使用Unix命令行功能,因此有一点学习经验,但您会喜欢它的强大功能,并且可以将console字符集设置为UTF-8
当然,您还可以获得所有常见的*nix功能,如grep、find、less等。由于我还没有看到任何关于Python 2.7的完整答案,我将概述两个重要步骤和一个非常有用的可选步骤
Properties
来更改以特定方式调用的命令窗口的设置(例如,在此处打开,Visual Studio)cp65001
,这似乎是Microsoft试图为命令提示符提供UTF-7和UTF-8支持。通过在命令提示符下运行chcp 65001来执行此操作。设置后,将保持此方式,直到窗口关闭。每次启动cmd.exe时都需要重新执行此操作REG_SZ
REG query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont"
0 REG_SZ Lucida Console
00 REG_SZ Consolas
936 REG_SZ *新宋体
932 REG_SZ *MS ゴシック
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont" /v 000 /t REG_SZ /d "Courier New"
REG ADD HKCU\Console /v CodePage /t REG_DWORD /d 65001 /f
REG ADD HKCU\Console /v FaceName /t REG_SZ /d "Courier New" /f
REG ADD HKCU\Console /v FontSize /t REG_DWORD /d 20 /f
REG ADD HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f