使用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. 安装java时,配置环境变量classpath的作用
  2. hadoop3.1伪分布式部署
  3. javascript读写本机文本文件
  4. java比较炫的登录界面_html+css实现漂亮的透明登录页面,HTML实现炫酷登录页面...
  5. 我从参加#PerfMatters会议中学到的东西
  6. SQLite CodeFirst、Migration 的趟坑过程 [附源码]
  7. ZZULIOJ 1093: 验证哥德巴赫猜想(函数专题)
  8. 『高级篇』docker之开发用户服务EdgeService(13)
  9. 遍历矩阵每一行穷举_六十三---矩阵中的路径
  10. VistaNet: Visual Aspect Attention Network for Multimodal Sentiment Analysis 论文笔记
  11. JAVA后台判断是否重复(编辑)
  12. UMTS与WCDMA
  13. Google设置应用专用密码
  14. ubuntu16.04下设置静态IP
  15. 对于Mixin(混入)详情介绍
  16. 累计三年,断断续续的管理经验
  17. 如何在大屏幕上滚动播放视频、图片和文字
  18. matlab怎么仿真低频振荡,电力系统低频振荡MATLAB仿真毕业论文.doc
  19. 微博社交登录接入出现错误码:21322 重定向地址不匹配——成功解决方法
  20. 设计模式之状态模式详解(State Pattern)

热门文章

  1. 基于微信电动车汽车共享电桩充电小程序毕业设计(带定位功能)毕设源码开题报告参考
  2. Oberon程序设计语言简介
  3. mfc 画圆算法 画椭圆算法
  4. 关于UI切图与开发 px和dp
  5. pytorch 安装检测代码
  6. 外星人 AW3423DW 评测
  7. redis数据库c语言接口
  8. 怎么调整java的行间距_Word行间距调整不了?学会这个技巧一招结局
  9. Excel部分快捷键用法(1)
  10. 基于单片机的数字温度计设计-零妖