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

新建一个记事本,写入“中”,另存为ANSI.txt,编码选ANSI;再次另存为Unicode.txt,编码选Unicode。把这两个文件用UltraEdit的十六进制功能打开(编辑 -> 十六进制功能 -> 十六进制编辑),如下图所示:

打开VS(我用的是VS2005),设定字符集为Unicode(右键项目名,属性 -> 配置属性 -> 常规 -> 字符集 -> 使用 Unicode 字符集),然后使用下面这段代码生成一个文件

CString strPath = _T("C:\\Documents and Settings\\Administrator\\桌面\\test.txt");
  CFile file;  
if (file.Open(strPath, CFile::modeCreate | CFile::modeWrite)) 
 {     
      //file.Write("\xff\xfe", 2); // 设置Unicode编码文件头   
       CString strText = _T("中");   
      file.Write(strText, sizeof(TCHAR) * strText.GetLength()); 
 }

把生成的文件用记事本打开,出现乱码,同样用十六进制功能打开,结果如下图所示:

对比图2发现最后两个字节都一样,但是图2前面多了两个字节:FF FE

一阵google之后发现图2中最开头的这两个字节是用于说明文件的编码方式,本例中我们把Unicode字符写入文件,却没有设置这个文件头。于是用记事本打开时,系统就会认为这是一个ANSI编码的文件(见图1,ANSI编码的文件没有文件头,没找到文件头就认为是ANSI编码),当然就出现乱码了。

解决办法:思路当然就是要想办法写入文件开头的那两个字节,这样系统才会认定这是一个Unicode编码的文件。具体方法就是把上面那段代码中的注释去掉,重新生成一下文件,用十六进制功能打开,发现和图2一样了,再用记事本打开,可以正常显示了。

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

  1. 提示缺少unicode打开乱码_解决记事本打开出现乱码的小技巧

    很多人都喜欢把一些重要的资料保存在记事本中,但当需要用到时,打开记事本却发现里面的文字全部都变成乱码的了,这令不少朋友烦恼不已.那么,记事本打开出现乱码怎么办呢?今天U大侠小编就和大家说说记事本打开出 ...

  2. notepad++打开文件后,我再用记事本打开中文乱码解决办法

    notepad++打开文件后,我再用记事本打开中文乱码 用natepad++打开文本,然后将编码方式 改成ANSI编码就能解决该问题

  3. python写入文件中文乱码_记一次python写入txt文件正常,但是写入csv文件中文乱码问题...

    今天在将已经爬取完存成txt文件批量导入保存csv格式时,文本中的汉字能够正常正常显示,但是用正常的方法保存到csv中就成了乱码. 最开始的写法:with open(city+'.csv','a+') ...

  4. python读txt文件时末尾许多空格-python读取txt文件时去掉空格的方法

    python读取txt文件时去掉空格的方法 发布时间:2020-09-22 14:15:44 来源:亿速云 阅读:85 作者:小新 这篇文章给大家分享的是有关python读取txt文件时去掉空格的方法 ...

  5. python列表写入txt文件中文乱码,python 字典格式的文本写入文件,中文乱码(Unicode)的问题...

    最近在做命名实体识别,需要处理数据,将字典格式的标记文本写入文件 然后一搜发现可以变成json再write到文件里(json.dumps),一试发现中文全部变成Unicode格式,又查如何变成中文.. ...

  6. java写入文件中文_java 写入txt文件的中文乱码問題

    读取文件的时候如果是用的read方法(字节流),碰到中文输出就是乱码,然后存储的时候设置下编码为GBK或者是UTF-8形式即可,可以有效的解决乱码问题. 可以通过BufferedReader 流的形式 ...

  7. python写入txt文件正常,但是写入csv文件中文乱码问题

    with open('/yourpath/test.csv','a',newline='', encoding='utf-8') as f:这是一开始用的语法,怎么都是乱的,但是修改了下encodin ...

  8. java log写入txt文件_使用java.util.logging.Logger时如何在文本文件中写日志

    问题 我有一种情况,我想写下我创建的所有日志写入文本文件. 我们使用java.util.logging.Logger API来生成日志. 我试过了 private static Logger logg ...

  9. php fwrite 数组,浅析php fwrite写入txt文件的时...-发现一个诡异的bug,不知何解...-php折线图 布局图 - 侯志凯_169IT.COM...

    本页文章导读: ▪浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题 - 一觉睡到天黑黑      以下是对php中fwrite写入txt文件的时候用 \r\n不能换行的问题进行了 ...

最新文章

  1. [译][Tkinter 教程10] Text 控件
  2. 微信支付通知 php,微信支付开发交易通知实例
  3. 网络知识 | 《图解TCP/IP》读书笔记(上)
  4. 欢乐纪中A组周六赛【2019.5.18】
  5. 在JShell中尝试Java9 HTTP客户端和Process API
  6. java实现qq抢红包_Java实现抢红包功用
  7. easyui中combotree只能选子选项,父级不被选中
  8. 浅析java中clone()方法
  9. git命令-远程仓库拉取、本地仓库更新、工作空间提交等等
  10. QObject: Cannot create children for a parent that is in a different thread.
  11. 推送微信公众号模板消息通知(Java版)
  12. 同事说关键字查询用Mysql,我上去就是一个高压锅,用ElasticSearch不香吗?
  13. nas做服务器虚拟化共享存储,NAS虚拟化的部署及实现解析
  14. 数据库中如何求候选码
  15. java springboot使用itext 为PDF添加文字水印并铺满屏
  16. AASM rule of scoring sleep stages using EEG signal
  17. 现代版的———项链 :(  转
  18. Magic Firewall 简介
  19. 网络爬虫playwright实现网站自动登录并签到
  20. 3D游戏设计作业(三)

热门文章

  1. JavaScript上传大文件并支持中途取消上传
  2. 初识EPANET 2(供水管网水里模型)
  3. 项目管理中快速制定高质量目标四个步骤
  4. AndroidStudio_安卓原生开发_apk在线升级_实现安装未知来源应用_亲测可用---Android原生开发工作笔记153
  5. 五年级上册计算机教学工作计划,五年级信息技术上册教学工作计划
  6. centos7-本地yum源的创建创建
  7. 《开运斗地主》隐私政策
  8. 【课程汇总】OpenHarmony全场景Demo数字管家系列课(附链接)
  9. AD7682 - 7689 学习笔记
  10. IFTTT在开发环境中使用Docker的经验