我们在Team Foundation Server(TFS)中有一个项目,其中包含非英语字符(š).当我试图编写一些与构建相关的东西时,我们偶然发现了一个问题 - 我们无法将š字母传递给命令行工具.命令提示符或其他什么不是搞砸了,并且tf.exe实用程序找不到指定的项目.
我已经尝试了.bat文件的不同格式(ANSI,带有和不带BOM的 UTF-8 )以及用JavaScript编写脚本(这本身就是Unicode) - 但没有运气.如何执行程序并将其传递给Unicode命令行?
我想在Windows控制台中打印俄语和德语字符.所以我写了一个小测试程序来了解它的工作原理:
PrintStream ps = new PrintStream(System.out, false, "UTF-8");
ps.println("öäüß ????");
Run Code Online (Sandbox Code Playgroud)
然后我启动了cmd.exe,将其字体改为Lucida Console,它支持Unicode,用"chcp 65001"将代码页改为Unicode,并执行了我的程序.
打印出德语和俄语字符,但文字比我预期的要多一些(用红色加下划线):

但是文本在Eclipse控制台中正确打印.有没有办法在Windows控制台中正确打印?我使用Windows 7.
我刚刚用JNI解决了这个问题,但它是否可以用纯java来解决它仍然很有趣.
可以使用该WriteConsoleW函数将 Unicode 字符写入 Windows 控制台。在我的 Windows 7 机器上,控制台似乎不支持基本多语言平面之外的字符。此外,组合字符显示在基本字符之后,而不是实际组合。
这些限制是否也存在于更高版本的 Windows 中?Windows 控制台中的 Unicode 是否还有其他限制?