wprintf输出可以在Windows上正确重定向到UTF-16?
发布时间:2020-12-13 20:07:49 所属栏目:Windows 来源:网络整理
导读:在C程序中,我使用wprintf在 Windows控制台中打印Unicode(UTF-16)文本.这可以正常工作,但是当程序的输出重定向到日志文件时,日志文件的UTF-16编码已损坏. 当在Windows命令提示符中完成重定向时,所有换行符都将被编码为窄ASCII换行符(0d0a).当在PowerShell中重
在C程序中,我使用wprintf在
Windows控制台中打印Unicode(UTF-16)文本.这可以正常工作,但是当程序的输出重定向到日志文件时,日志文件的UTF-16编码已损坏.
当在Windows命令提示符中完成重定向时,所有换行符都将被编码为窄ASCII换行符(0d0a).当在PowerShell中重定向时,插入空字符. 可以将输出重定向到正确的UTF-16日志文件吗? 示例程序: #include <stdio.h> #include <windows.h> #include <fcntl.h> #include <io.h> int main () { int prevmode; prevmode = _setmode(_fileno(stdout),_O_U16TEXT); fwprintf(stdout,L"onen"); fwprintf(stdout,L"twon"); fwprintf(stdout,L"threen"); _setmode(_fileno(stdout),prevmode); return 0; } 在命令提示符中重定向输出.看到0d0a应该是0d00 0a00: c:test>.testu16.exe > o.txt c:test>xxd o.txt 0000000: 6f00 6e00 6500 0d0a 0074 0077 006f 000d o.n.e....t.w.o.. 0000010: 0a00 7400 6800 7200 6500 6500 0d0a 00 ..t.h.r.e.e.... 在PowerShell中重定向输出.看到所有的0000插入. PS C:test> .testu16.exe > p.txt PS C:test> xxd p.txt 0000000: fffe 6f00 0000 6e00 0000 6500 0000 0d00 ..o...n...e..... 0000010: 0a00 0000 7400 0000 7700 0000 6f00 0000 ....t...w...o... 0000020: 0d00 0a00 0000 7400 0000 6800 0000 7200 ......t...h...r. 0000030: 0000 6500 0000 6500 0000 0d00 0a00 0000 ..e...e......... 0000040: 0d00 0a00 ....
“>” 中即使将BOM放在输出上或使用prevmode = _setmode(_fileno(stdout),_O_BINARY)),将始终将您的控制台UTF16重定向为可打印的“ASCII”.我有与Windows7相同的问题,没有办法这样做与fwprintf.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Windows Server 2016-三种方法备份还原DHCP服务器
- arm – 如何解码Windows CE调用堆栈?
- windows-7 – 更改Windows(7)的方法通过脚本监视设置
- 是否有针对Windows Media Player的文档化JavaScript API?
- 新建Microsoft Word文档
- windows-7 – Windows 7 VPN是否可与Cisco ASA 5510配合使用
- windows-phone-7 – 是否可以使用不同的IsolatedStorageSet
- 用于读取.ini文件的Windows批处理脚本
- 在Windows 8.1上如何安装MongoDB作为服务
- windows – 如何获取属于某个进程的已打开句柄的数量?
推荐文章
站长推荐
- Windows Server 2016-批量新建域用户(二)
- 如何在cygwin下的Windows上指定带空格的git URL?
- 如何将公共证书导入Windows Azure?
- 为什么从Windows和Mac构建时,android apk的大小不
- windows-server-2008 – 远程桌面服务远程音频问
- iis – 方括号[]语法在WiX中意味着什么
- windows – 重定向当前IO设备以进行第三方例行交
- windows-server-2003 – 你能找到在Windows 2003
- windows-server-2008 – Windows Server2008 Rem
- 加密 – Windows CryptoAPI:带有CALG_SHA_256的
热点阅读