最近在使用WriteFile函数时发现,vc2008中unicode字符集下处理中文乱码的一些解决方法,归纳如下

1. 写入的时候采用多字节char类型

    HANDLE hFile;DWORD nBytes;hFile=CreateFile(_T("test.txt"),GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,0,NULL);char msg[]="我是我的我";if(hFile!=INVALID_HANDLE_VALUE){WriteFile(hFile,msg, sizeof(msg) ,&nBytes,NULL);CloseHandle(hFile);}

2. 直接写入unicode的头字节

    HANDLE hFile;DWORD nBytes;hFile=CreateFile(_T("test.out"),GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,0,NULL);WCHAR msg[]=L"我是我的我";if(hFile!=INVALID_HANDLE_VALUE){WORD a=0xFEFF;WriteFile(hFile,&a,sizeof(a),&nBytes,NULL);WriteFile(hFile,msg, lstrlen(msg) * sizeof(TCHAR),&nBytes,NULL);CloseHandle(hFile);}

3. 使用wcstombs转换成多字节,需要引用wchar.h和locale.h

  HANDLE hFile;DWORD nBytes;hFile=CreateFile(_T("test.out"),GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,0,NULL);WCHAR msg[]=L"我是我的我";if(hFile!=INVALID_HANDLE_VALUE){char buf[sizeof(msg)];setlocale(LC_ALL, ".936");wcstombs(buf, msg, sizeof(msg));WriteFile(hFile,buf, sizeof(buf),&nBytes,NULL);CloseHandle(hFile);}
//
hFile=CreateFile(_T("test.txt"),GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_ALWAYS,0,NULL);
if(hFile!=INVALID_HANDLE_VALUE)
{WCHAR line[256]={0};BOOL bResult;bResult=ReadFile(hFile,line,sizeof(line),&nBytes,NULL);if(nBytes!=0){printf("%s\r\n",line);}CloseHandle(hFile);
}

4. 使用WideCharToMultiByte转换成多字节

(省略)

Unicode字符集下WriteFile中文处理相关推荐

  1. Unicode字符集下CString与char *转换 (解决中文乱码等)(转)

    UniCode 下 CString 转 char* 的方法的文章有很多,但是大部分都是在互相转载,看了那么多资料,仍然没有解决乱码的问题,后来从一个论坛的一条回复里面找到了正确的方法,特此拿出来与大家 ...

  2. Unicode字符集下CString/tchar*与char *转换 (解决中文乱码等)

    Unicode环境下宽字符------->窄字符的转换 定义:TCHAR m_szIp[MAX_IP_LEN];   我们要将TCHANR类型数组(宽字符型)转换为char*pBuffer类型( ...

  3. WIN32开发之Unicode字符集下cstring转换为char[]相互转换

    1.CString转char[] CString SeveName:// char ch[100]; memcpy(a, SeveName, SeveName.GetLength() * 2); fo ...

  4. 计算机系统-Unicode字符集与它包含的UTF-8解决方案

    Unicode字符集最早要求每个字符占4个字节,这用英语和阿拉伯语的国家能同意吗?他们肯定不同意,4个字节太大了,但是类似中文韩语日语这些,1个2个字节还放不下,这就提出了Unicode字符集下的UT ...

  5. 通过编写串口助手工具学习MFC过程——(三)Unicode字符集的宽字符和多字节字符转换...

    通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...

  6. unicode 字符集环境下的mfc 读写 ini 配置文件的_WSL:在Windows下优雅地玩Linux

    本文作者:刘观宇,360 奇舞团高级前端工程师.技术经理,W3C CSS工作组成员. 引子 一直以来,Windows的命令行的体验都不是特别的友好.由于Windows以图形界面交互为主,同时微软在一段 ...

  7. linux 添加宋体字符集,Linux下安装中文宋体

    1,#cd /usr/share/fonts/default 2,mkdir -p ./truetype/simsun 3,取得simsun.ttc文件:如果网上下载不到则在windows (c:/w ...

  8. 使用Unicode字符集时用CFile把中文写入txt文件再用记事本打开出现乱码的问题

    使用Unicode字符集时用CFile把中文写入txt文件再用记事本打开出现乱码的问题 新建一个记事本,写入"中",另存为ANSI.txt,编码选ANSI:再次另存为Unicode ...

  9. unicode字符集与utf-8编码的区别,unicode转中文工具、中文转unicode工具(汉字)

    在cw上报的报警信息中,有一个name字段的值是\u4eba\u4f53 不知道是啥,查了一下,是unicode编码,用下面工具转换成汉字就是"人体" 参考文章:https://t ...

最新文章

  1. C#百度OCR-本地和网络图片识别文字
  2. Linux 自动删除N天前的文件
  3. 电子产品的磨砂膜和镜面膜的选择
  4. android的m、mm、mmm编译命令
  5. Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
  6. POJ 1952 BUY LOW, BUY LOWER
  7. windows openssl环境变量_run custom build command for `openssl-sys v0.9.55`
  8. cp复制多个文件到指定目录
  9. bug篇——Windows启动redis报错Creating Server TCP listening socket 127.0.0.1:6379: bind: No error...
  10. BP神经网络数据预测(excel)
  11. 计算机与不确定性原理,傅里叶变换和不确定性原理
  12. XXXX大学课程设计说明书格式规范
  13. 微信小程序开发者工具使用vant组件
  14. 微信公众号HTML5接入腾讯云人脸核身
  15. 串口之COMMTIMEOUTS结构体详解
  16. [精简]RuoYi开发实战-搭建开发环境
  17. 计算机修改wif教程,电脑修改wifi密码步骤
  18. 34岁王晓松的成绩单:新城控股收入股价双增,毛利率骤降9%
  19. android-控件之Textview属性
  20. python vba excel课程_【Python3+VBA】在Excel中生成小姐姐|python3教程|python入门|python教程...

热门文章

  1. 软件测试面试-如何测试一个杯子(转)
  2. Java vs Big data 哪种编程语言更好?
  3. Emacs 24.3 配置JDEE(http://blog.csdn.net/csfreebird/article/details/19033939)
  4. hdu oj 2020 绝对值排序
  5. 一个当了爹的程序员的自白
  6. jQuery 之父:每天写代码
  7. 前端页面水印生成实现
  8. Mahout-协同过滤-CF-推荐算法基本概念及代码示例
  9. 马上开始写 react ES6 --- 基于gulp 和 Babel 的脚手架
  10. 总结Servlet体系接口和类