首页 > Windows SDK > WriteFile写入TCHAR到HTML乱码

WriteFile写入TCHAR到HTML乱码

给程序加一个导出数据到HTML表格的功能,结果发现HTML页面全是乱码。数据是通过WriteFile这个API写入文件的,是TCHAR字符(开启了UNICODE,就是WCHAR了),测试了IE、Chrome两个浏览器,发现都是乱码。

原因排查:一开始以为是HTML编码问题,于是换UTF-8和GB2312,但依旧还是乱码。仔细看看,发现浏览器根本没有把文件当HTML处理,标签什么的都显示了出来,标签名字中夹杂着无法显示的符号。找不到解决 方案,只能求助于Google了。

乱码原因:因为是TCHAR,开启了UNICODE,所以写入的是宽字节;而通常的HTML文件是单字节的,也就是char。不信的话可以随便打开一个网页,然后另存为HTML,接着用十六进制编辑器(如C32Asm)查看这个文件,就会发现时单字节的。而我们写入的是双字节,解析文件时自然会遇到问题。

解决方案

  1. 先将宽字符转换为单字符,也就是将WCHAR转换为char,然后再写入文件。
  2. 在文件开头处写入0xFF和0xFE两个字节,然后再写入WCHAR数据。

WriteFile写入TCHAR到HTML文件乱码解决方案


觉得文章还不错?点击此处对作者进行打赏!


本文地址: 程序人生 >> WriteFile写入TCHAR到HTML乱码
作者:代码疯子(Wins0n) 本站内容如无声明均属原创,转载请保留作者信息与原文链接,谢谢!


更多



分类: Windows SDK 标签: , , ,
  1. 本文目前尚无任何评论.