我们在Team Foundation Server(TFS)中有一个项目,其中包含非英语字符(š).当我试图编写一些与构建相关的东西时,我们偶然发现了一个问题 - 我们无法将š字母传递给命令行工具.命令提示符或其他什么不是搞砸了,并且tf.exe实用程序找不到指定的项目.
我已经尝试了.bat文件的不同格式(ANSI,带有和不带BOM的 UTF-8 )以及用JavaScript编写脚本(这本身就是Unicode) - 但没有运气.如何执行程序并将其传递给Unicode命令行?
我chcp 65001在Windows shell中遇到命令问题.
我需要生成文件夹中的文件列表.所以我运行cmd.exe,输入
cd folder
dir /B /O:N > list_of_files.txt
Run Code Online (Sandbox Code Playgroud)
它工作,但我遇到了一些特殊的非ASCII字符的问题,这些字符在某些文件名中.所以我补充道
chcp 65001
一切正常,但当我将这些命令放入.bat文件时,脚本不起作用.
所以
cd folder
chcp 65001
dir /B /O:N > list_of_files.txt
Run Code Online (Sandbox Code Playgroud)
不生成列表.
和
cd folder
chcp 65001 && dir /B /O:N > list_of_files.txt
Run Code Online (Sandbox Code Playgroud)
以及
cd folder
chcp 65001 > nul && dir /B /O:N > list_of_files.txt
Run Code Online (Sandbox Code Playgroud)
生成列表,但使用默认编码:/.
一切都在cmd.exe中工作,但不在.bat文件中.
我已经阅读了主题:stackoverflow.com/questions/2182568/batch-script-is-not-executed-if-chcp-was-called,但它没有帮助.
编辑:我部分解决了我的问题,改为chcp 65001,chcp 1250因为所有字符都在这个编码.但实际上这并没有回答这个问题.
我已经chcp 65001在命令提示符和Windows Powershell中强制使用了一段时间,但是从SO和其他几个社区的问答环节来看,这似乎是一种危险且低效的解决方案。Microsoft是否提供一种chcp 65001可以永久保存而无需手动更改注册表的改进/完整替代方案?如果没有,将来是否有公开宣布的时间表或议程来支持Windows CLI中的UTF-8?
我个人已经使用了chcp 949韩国字符支持,但反斜线的怪异显示\在多个应用程序(如Neovim),以及字符和不正确/难以理解的显示器是不是韩国未通过支持949似乎变得更加的最近有问题。