当前位置:  开发笔记 > 编程语言 > 正文

windows cmd管道即使用/ U开关也不是unicode

如何解决《windowscmd管道即使用/U开关也不是unicode》经验,为你挑选了1个好方法。

我有一个小的c#控制台程序,使用Console.WriteLine输出一些文本.然后我将此输出传递给文本文件,如:

c:myprogram > textfile.txt

但是,即使我使用/ u开关启动cmd,该文件也始终是ansi文本文件.cmd /?关于/ u开关说:

/ U使管道或文件的内部命令输出为Unicode

当我做的时候确实有所作为

c:echo "foo" > text.txt

text.txt是unicode(没有BOM)

我想知道为什么我的控制台程序的输出汇总到一个新文件同样不会创建一个unicode文件,我怎么能改变它?

我只使用Windows Power Shell(它生成一个具有正确BOM的unicode文件),但我仍然想知道如何使用cmd.

谢谢!



1> Rob Kennedy..:

正如文档所述,/ U开关会影响内部命令是否生成Unicode输出.您的程序不是cmd.exe的内部命令之一,因此/ U选项不会影响它.

要创建Unicode文本文件,您需要确保您的程序生成Unicode文本.

但即使这样也可能还不够.我从张俊峰那里得到了这篇博客,描述了如何在控制台程序中编写Unicode文本.它检查标准输出句柄的文件类型.对于字符文件(控制台或LPT端口),它调用WriteFileW.对于所有其他类型的句柄(包括磁盘文件和管道),它将输出字符串转换为控制台的当前代码页.不过,我担心我不知道这会如何转化为.Net术语.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有