我们在Team Foundation Server(TFS)中有一个项目,其中包含非英语字符(š).当我试图编写一些与构建相关的东西时,我们偶然发现了一个问题 - 我们无法将š字母传递给命令行工具.命令提示符或其他什么不是搞砸了,并且tf.exe实用程序找不到指定的项目.
我已经尝试了.bat文件的不同格式(ANSI,带有和不带BOM的 UTF-8 )以及用JavaScript编写脚本(这本身就是Unicode) - 但没有运气.如何执行程序并将其传递给Unicode命令行?
当我在Windows中打开cmd.exe时,它使用的是什么编码?
如何查看当前使用的编码?它取决于我的区域设置还是有任何环境变量需要检查?
键入具有特定编码的文件时会发生什么?有时我会收到乱码(使用的编码不正确),有时候它会有所作为.但是,只要我不知道发生了什么,我就不相信任何事情.谁能解释一下?
问题
当我想在Python解释器中输入 Unicode字符时出现问题(为简单起见,我在示例中使用了a-umlaut,但我首先遇到了这个用于Farsi字符).每当我将python与chcp 65001代码页一起使用,然后尝试输入一个Unicode字符时,Python就会退出而没有任何错误.
我花了好几天试图解决这个问题无济于事.但是今天,我在python网站上发现了一个帖子,另一个在MySQL上发现了一个线程,另一个在Lua用户身上发现了这个突然退出的问题,尽管没有任何解决方案,有些说这chcp 65001本身就是破坏的.
一劳永逸地知道这个问题是与chcp设计有关还是有可能的解决方法.
重现错误
chcp 65001
Python 3.X:
Python shell
print('ä')
结果:它只是退出shell
然而,这是有效的python.exe -c "print('ä')"
,也是这样的:print('\u00e4')
结果:ä
在Luajit2.0.4中
print('ä')
结果:它只是退出shell
但这有效: print('\xc3\xa4')
到目前为止,我已经提出了这个观察结果:
所以, 这不是一个Python的错误和我们不能在Windows命令提示符或任何其包装像Conemu,Cmder的CLI程序直接使用Unicode字符(我用Cmder能够看到和在Windows中使用Unicode字符shell和我这样做没有任何问题).它是否正确?