Windows7 PowerShell在每个字符之间插入^ @ - 如何防止?

LAF*_*ica 5 vim powershell windows-7

希望对你而言,这将是微不足道的回答.

我在Win7上有gvim和vim.每当我将命令结果重定向到文件并用Vim(或Gvim,同样的效果)打开它时,我在每个字符之间插入二进制0(^ @符号).

所以,而不是

r96130

我有

^@r^@9^@6^@1^@3^@0^@

任何想法如何(首选)防止它或(罚款)摆脱它?

我试过替换,但显然这不仅仅是^ @,它是二进制零(我认为)所以它没有被接受/^@.

编辑(S):

1)尝试将设置编码设置为UTF-8(我正在处理的内容的编码)和UTF-16(根据@Philippe Wendler的回答,谢谢),无济于事.

2)__PowerShell__是有罪的一方.当我在通常的命令行(via cmd)上进行重定向时,没有副作用.只有在PowerShell会话上创建的文件才会插入这些二进制零.

3)@Christian提到的Powershell好东西并没有帮助.因为我已经将Ubuntu作为我的主要操作系统切换到Ubuntu并在那里使用Vim,所以我将留下未回答的问题,所以这里唯一的"解决方案"现在不使用PowerShell + Vim,这显然缺乏答案.:-)

解!

感谢@ Emperor XLII提供解决方案!这里发布的评论可能不够明显:

dir | OutFile -Encoding UTF8 test 
Run Code Online (Sandbox Code Playgroud)

创建一个出现在Vim中但没有二进制零的文件.如果我使用Encoding运行到OEM,ASCII和我测试的其他两个,也会发生同样的情况.

一个有希望的提示在于:he 'fileencodings'- 是的,复数,@ Dan Fitch,但是我没有测试它,因为那时候我已经离开了Win7.

Phi*_*ler 4

Windows内部使用UTF-16作为Unicode编码,这个文件看起来也使用UTF-16,但vim用8位字符集(可能是latin1)解释它。

尝试:set encoding=utf-16在 vim 中选择正确的编码。