实验工具

notepad++编辑器

实验过程

  • 步骤1:打开notepad++,新建一个文本文件,在其中输入一段汉字文本,查看当前编码格式,如下:

  • 分析:由上图可见,从右下角可知当前文件是以UTF-8解码显示的,显示内容没有乱码,说明文件的编码格式与解码显示格式一致,均为UTF-8。

  • 步骤2:通过“编码”菜单栏将解码显示格式改为ANSI,结果文件内容变成了乱码

  • 分析:文件编码格式为UTF-8,但解码显示格式为ANSI,因此文本显示为乱码。此时,虽然文本是按UTF-8编码的,但编辑器对其是按照ANSI进行解码的,也就是不管文本是否显示为乱码,编辑器当前认为文件是按ANSI进行编码的,所以对其按ANSI进行了解码显示。

  • 步骤3:将编码格式转换为ANSI,结果没有变化

  • 分析:因为编辑器当前是按照ANSI编码格式进行解码的,及编辑器默认文件的编码格式为ANSI,此时将文件编码转换为ANSI,意味编码格式从ANSI转换到ANSI,相当于没有转换,自然不会有任何变化(可以通过将解码格式改成UTF-8来验证文件的编码格式是否仍然为UTF-8)。

  • 步骤4:将编码格式转换为UTF-8,结果文本变成了另外一种乱码,并且选项卡图标变成了红色,

  • 分析:选项卡图标变为红色,说明文件被修改了,说明转换过程经过了字节数据上的改变。而文本变成另外一种乱码,是因为编辑器把原来的乱码当成了文本正确显示的样子对其进行了从ANSI到UTF-8编码的转换,得到的乱码是原来的乱码经过转码后在UTF-8编码格式下解码的结果。此时,要想将乱码恢复到原来正确的文字,需要按照相反的顺序进行转码,即先UTF-8转ANSI,然后按UTF-8解码,如步骤5。而如果在此基础上使用ANSI标准进行解码显示,文本又会变成一种新的乱码,如步骤6。

  • 步骤5:先进行UTF-8到ANSI的编码转换,发现经过一次转换再转换回来的乱码发生了变化,原来的法郎符号变成了十六进制数x80。再将解码标准换成UTF-8,结果显示只有部分文本恢复到了正确的样子。

  • 分析:这个结果说明,在不知道文件编码标准的情况下出现乱码,然后盲目地对文件地编码进行转换,这样很可能会对原来的文件造成损坏,即使最后知道了文件的真实编码标准,也很可能难以恢复完全

  • 步骤6:在步骤4的基础上,把解码标准改为ANSI,结果乱码又变成了一种新的乱码。

  • 分析:这是因为用ANSI标准对按照UTF-8进行编码的乱码进行了解码,第二种乱码是相对第三种乱码的正确文字,而第一种乱码又是相对第二种乱码的正确文字,而真正的正确文字又是相对第一种乱码的正确文字,可以说原来的文字经过了反复三次的误解码后得到的最终的乱码。??似乎可以用这种方式对一些文本进行加密??答案当然是不可以,从步骤5中得到的结果就可以知道,这样会导致所需要加密的信息的丢失。

实验结论

  • 在不知道文件编码标准的情况下出现乱码,然后盲目地对文件地编码进行转换,这样很可能会对原来的文件造成损坏,即使最后知道了文件的真实编码标准,也很可能难以恢复完全。

  • 不能通过反复误编码的方式来进行文本加密,这样会导致员文本信息的损坏。

汉字乱码状态下的编码转换将导致的问题相关推荐

  1. php中文汉字与16进制编码转换三种方法

    本文介绍了php中文汉字与16进制编码转换的方法,php汉字编码转换的几个例子,有需要的朋友参考下. 用php实现中文汉字与16进制间的编码转换. 例1, <?php //汉字转换为16进制编码 ...

  2. 解决中文乱码问题:使用编码转换工具

    解决中文乱码问题:使用编码转换工具 问题 比如我们在上传项目到github的时候,可能会遇到一种情况:我们的eclipse和Myeclipse的默认编码格式一般都是GBK,可能一开始我们没有设置UTF ...

  3. linux 保存文件名乱码怎么办,Linux 文件名编码转换 乱码 解决办法

    Linux中操作windows下的文件,可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8.下面介绍一下,在Linux中如何查看文 ...

  4. linux下字符编码转换

    2019独角兽企业重金招聘Python工程师标准>>> 关于字符编码: 字符编码笔记:ASCII,Unicode和UTF-8: http://www.ruanyifeng.com/b ...

  5. 汉字转16进制 php,php中文汉字与16进制编码转换三种方法

    用php实现中文汉字与16进制间的编码转换. 例1, 复制代码 代码示例: //汉字转换为16进制编码 function hexencode($s) { return preg_replace('/( ...

  6. 汉字转16进制 php,PHP实现中文汉字与16进制编码转换

    /** * 把一个汉字转为unicode的通用函数,不依赖任何库,和别的自定义函数,但有条件 * 条件:本文件以及函数的输入参数应该用utf-8编码,不然要加函数转换 * 其实亦可轻易编写反向转换的函 ...

  7. Mac下utf-8编码转换问题

    文章分为两部分内容:1.excel每一行到处为txt 2.用enca转换utf-8 excel每一行导出为txt 背景:最近在做智库项目,爬取了高校很多教师信息,经过预处理后保存为excel文件,由于 ...

  8. 获取String类型汉字乱码,如何进行编码

    本文为博主原创,未经允许不得转载: 在解析properties文件中的汉字时,在java代码中解析得到的是一个乱码字符,形如图下: 导致乱码原因:由于在jdk中,默认为gbk编码方式进行编码盒接收的, ...

  9. linux修改文件名为gbk,Linux下文件名编码转换-Convmv

    背景 由于服务器环境默认字符编码为gbk,当执行程序后生成的日志文件名的字符编码为gbk的,但是程序读取日志的时候用的utf-8编码,当日志文件名包含中文时就不能找到日志,于是可以用Convmv来批量 ...

最新文章

  1. centos7安装php5.2yum源操作_CentOS 7下Yum安装PHP7.2步骤
  2. 如果有一天,我们再见面
  3. @Value 注入静态变量
  4. NOIP提高组复赛 知识点整理
  5. 前端MVC框架之 Angular
  6. python eval 字符串替换_Python中eval妙用,字符串转字典和列表
  7. 你写过哪些原创的风骨傲气,热血沸腾的句子?
  8. python爬虫requests库_python爬虫使用Requests库 - pytorch中文网
  9. YOLO: Real-Time Object Detection 遇到的问题
  10. java常见反编译工具
  11. 集成电路模拟版图入门-版图基础学习笔记(五)
  12. 学编程必备:3 大编程字体!让你在编程的时候原地起飞!
  13. 删除win7系统100M隐藏分区
  14. 2023年南昌大学电子信息考研考情与难度、参考书及上岸前辈经验
  15. ptp精准时间协议_精确时间协议PTP研究
  16. 罗克韦尔PLC程序,水处理自动化最高程序
  17. python的io模块
  18. 自定义控件其实很简单 五
  19. adas记录仪app_小蚁行车记录仪app
  20. 翻纸牌游戏 【HDU - 2209】【规律】

热门文章

  1. 【nv12 格式转换】不同图像数据格式之间转换代码实操
  2. LiveGBS国标GB/T28181前端设备录像历史视音频回放下载接口调用说明
  3. 第一篇:如何在Win10安装iis
  4. 帝国CMS7.5仿《女人说》模板源码/帝国CMS内核女性生活时尚门户网站模板
  5. 2、使用Xcode9创建第一个IOS界面
  6. 【ArcGIS】10 流域水系提取
  7. YUMI制作启动盘安装ubuntu时报错:booting ‘find /menu.lstk /boot/grub/menu.lst, /grub/menu.lst‘
  8. 如何用命令批量重命名文件
  9. MIKE 21 教程 2.11 结果输出查看,使用,分析与三维河道的制作
  10. C语言使用技巧1:ASCII码表