我们在Team Foundation Server (TFS)中有一个项目,其中有一个非英语字符(š)。当尝试编写一些与构建相关的脚本时,我们偶然发现了一个问题——我们不能将这个字母传递给命令行工具。命令提示符或其他东西会把它弄乱,tf.exe实用程序无法找到指定的项目。

我尝试了不同格式的.bat文件(ANSI, UTF-8,带BOM和不带BOM),以及用JavaScript编写脚本(本质上是Unicode) -但运气不好。如何执行程序并传递一个Unicode命令行?


当前回答

这个问题很烦人。我通常在文件名和文件内容中使用中文字符。请注意,我使用的是Windows 10,下面是我的解决方案:

如果在Windows 10上安装了Ubuntu bash,则显示文件名为dir或ls

设置该区域支持非utf8字符。 在此之后,控制台的字体将被更改为该地区的字体,它还将更改控制台的编码。

在完成以上步骤后,为了使用命令行工具显示UTF-8文件的文件内容

通过chcp 65001将页面更改为utf-8 更改为支持utf-8的字体,例如Lucida Console 使用type命令查看文件内容,如果你在Windows 10上安装了Ubuntu bash,可以使用cat命令查看 请注意,在将控制台的编码设置为utf-8后,我无法在cmd中使用中文输入法输入汉字。

最懒的解决方案:只使用控制台模拟器,如http://cmder.net/

其他回答

实际上,关键在于命令提示符实际上理解这些非英语字符,只是不能正确地显示它们。

当我在命令提示符中输入包含一些非英语字符的路径时,它显示为“?? ?”?????? ? ? ? ? ?”当您提交命令(cd "???????? ?????”在我的情况下),一切都按照预期工作。

对于类似的问题(我的问题是在命令提示符上显示来自MySQL的UTF-8字符),

我是这样解决的:

我把命令提示符的字体改成了Lucida Console。(此步骤必须与您的情况无关。它只与你在屏幕上看到的东西有关,而与角色本身无关)。 我把代码页改成了Windows-1253。您可以在命令提示符中通过“chcp 1253”执行此操作。它适用于我想要查看UTF-8的情况。

把代码页改成1252对我有用。我遇到的问题是,Windows Server 2008上的DOS正在将符号double doller§转换为另一个符号。

在我的BCP声明^§中,我使用了CHCP 1252和它之前的一个帽。

我发现这个方法在新版本的Windows 10中很有用:

打开此功能:"Beta版:使用Unicode UTF-8支持全球语言"

控制面板->区域设置->管理选项卡->更改 系统区域设置…

一个快速决定。bat文件,如果你的电脑显示你的路径/文件名正确时,你在dos窗口输入:

copy con temp.txt[按Enter] 输入路径/文件名[按Enter] 按Ctrl-Z[按Enter]

这样你就创建了一个。txt文件- temp.txt。在记事本中打开它,复制文本(不要担心它看起来不可读),并粘贴到你的。bat文件中。 在DOS-window中执行以这种方式创建的.bat对mе(西里尔语,保加利亚语)有效。