我们在Team Foundation Server (TFS)中有一个项目,其中有一个非英语字符(š)。当尝试编写一些与构建相关的脚本时,我们偶然发现了一个问题——我们不能将这个字母传递给命令行工具。命令提示符或其他东西会把它弄乱,tf.exe实用程序无法找到指定的项目。
我尝试了不同格式的.bat文件(ANSI, UTF-8,带BOM和不带BOM),以及用JavaScript编写脚本(本质上是Unicode) -但运气不好。如何执行程序并传递一个Unicode命令行?
我们在Team Foundation Server (TFS)中有一个项目,其中有一个非英语字符(š)。当尝试编写一些与构建相关的脚本时,我们偶然发现了一个问题——我们不能将这个字母传递给命令行工具。命令提示符或其他东西会把它弄乱,tf.exe实用程序无法找到指定的项目。
我尝试了不同格式的.bat文件(ANSI, UTF-8,带BOM和不带BOM),以及用JavaScript编写脚本(本质上是Unicode) -但运气不好。如何执行程序并传递一个Unicode命令行?
当前回答
对于那些使用WSL但又不想要Cygwin或Git的额外包的人来说,wsltty是可用的,它只提供支持UTF-8的终端
其他回答
一个非常简单的选择是安装一个Windows bash shell,如MinGW并使用它:
有一点学习曲线,因为你将需要使用Unix命令行功能,但你会喜欢它的力量,你可以将控制台字符集设置为UTF-8。
当然,您还可以得到所有常见的*nix好东西,如grep、find、less等。
检查非unicode程序的语言。如果你在Windows控制台中有俄语问题,那么你应该在这里设置俄语:
一个快速决定。bat文件,如果你的电脑显示你的路径/文件名正确时,你在dos窗口输入:
copy con temp.txt[按Enter] 输入路径/文件名[按Enter] 按Ctrl-Z[按Enter]
这样你就创建了一个。txt文件- temp.txt。在记事本中打开它,复制文本(不要担心它看起来不可读),并粘贴到你的。bat文件中。 在DOS-window中执行以这种方式创建的.bat对mе(西里尔语,保加利亚语)有效。
这个问题很烦人。我通常在文件名和文件内容中使用中文字符。请注意,我使用的是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/
我发现这个方法在新版本的Windows 10中很有用:
打开此功能:"Beta版:使用Unicode UTF-8支持全球语言"
控制面板->区域设置->管理选项卡->更改 系统区域设置…