WriteFile写中文字符串TxT显示乱码

WriteFile写中文字符串TxT显示乱码

 

写UNICODE字符串到TXT文件里,打开显示乱码,查了相关资料,解决的方法有两种:

1、在写入前插入0xFEFF,让系统认为是Unicode编码。注意,写入后用十六进制编辑器查看高低位是互换的

 

Unicode:0xFEFF

UTF8:0xEFBBBF

 

 

 

//这是一种解决乱码的方法,在前面写入0xfeff,以unicode方式打开

//      WORDa = 0xfeff;//写入0xfeff让记事本以Unicode方式打开,中文不会乱码

//     WriteFile(hFile, &a, 2, &dwBytesWrite, NULL);

//      if(WriteFile(hFile, szText,dwNumText*2, &dwBytesWrite, NULL))//第三个参数是写入的byte数,因为是宽字符,所以个数要乘以2

 

//第二种方法,宽窄字符转化

      int a= WideCharToMultiByte(CP_ACP, NULL, szText, -1, LPSTR(szTextAnsi), MAX_PATH,NULL, FALSE);//Unicode转换为ANSI,a的值包括了字符串最后的0

      if(WriteFile(hFile, szTextAnsi,a-1, &dwBytesWrite, NULL))//写入的时候最后的0不用写入所以要用a-1

      {

      MessageBox(hwnd,TEXT("写入成功"),TEXT("成功"),0);

      }

      else

      {

      MessageBox(hwnd,TEXT("写入失败"),TEXT("出错"),0);

      }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值