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

news2024/9/20 20:31:26

实验工具

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中得到的结果就可以知道,这样会导致所需要加密的信息的丢失。

实验结论

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/182714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序——页面事件,.启用下拉刷新监听页面的下拉刷新事件,上拉触底事件,停止下拉刷新的效果

一.页面事件1.什么是下拉刷新下拉刷新是移动端的专有名词,指的是通过手指在屏幕上的下拉滑动操作,从而重新加载页面数据的行为。2.启用下拉刷新启用下拉刷新有两种方式:a.全局开启下拉刷新在 app.json 的window 节点中,将 enableP…

python 蓝桥杯 矩阵拼接

问题描述已知 3 个矩形的大小依次是 a_{1} \times b_{1}, a_{2} \times b_{2}a1b1,a2b2 和 a_{3} \times b_{3}a3b3 。用这 3 个矩形能拼 出的所有多边形中, 边数最少可以是多少?例如用 3 \times 232 的矩形(用 A 表示)、 4 \times 141 的矩形 (用 BB 表示) 和 2 \…

法律常识(一)婚姻法全文

目录 参考 第一章 总 则 第二章 结 婚 第三章 家庭关系 第四章 离 婚 第五章 救助措施与法律责任 第六章 附 则 参考 中华人民共和国婚姻法http://www.gqb.gov.cn/node2/node3/node5/node9/node101/userobject7ai1290.html 《图解中华人民共和国婚姻法》 &#xff…

[架构之路-92]:《软件架构设计:程序员向架构师转型必备》-2-解析软件架构的概念

前言:什么是软件架构?不同的人,有不同的答案。因为架构无处不再,架构又有不同层面。很多人都给架构定义,不同的人,对架构有不同的理解,很难统一。本文是按照作者个人的理解,来展现一…

React是不是MVVM架构吗?

首先说结论:不是 一、MVVM Model-View-ViewModel:一句话概括MVVM,操作数据,就是操作视图,就是操作DOM。开发者只需要完成包含申明绑定的视图模板,编写ViewModel中业务数据变更逻辑,View层则完…

Lua 协同程序(coroutine)

Lua 协同程序(coroutine) 参考文章: 菜鸟教程 https://zhuanlan.zhihu.com/p/480357405 https://zhuanlan.zhihu.com/p/76249973 Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针&#xff0…

贪心算法(例题详细解说)

日升时奋斗,日落时自省 目录 1、选择排序 2、分割平衡字符串 3、买卖股票的最佳时机 II 4、跳跃游戏 5、钱币找零 6、多机调度问题 7、活动选择 8、无重复区间 贪心思想:顾名思义 贪 是该算法的一大特点,如何贪?&#x…

2023-01-28 clickhouse-聚合函数的源码再梳理

笔者在源码笔记1之中分析过ClickHouse的聚合函数的实现,但是对于各个接口函数的实际如何共同工作的源码,回头看并没有那么明晰,主要原因是没有结合Aggregator的类来一起分析聚合函数的是如果工作起来的。所以决定重新再完成一篇聚合函数的源码…

梦熊杯-十二月月赛-白银组题解-A.自由

A. Problem A.自由(freedom.cpp) 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述: 「蒙德」是「自由」的国度。 巴巴托斯认为,如果一个数的…

ch1_2 计算机的基本组成

计算机的基本组成 1. 冯 诺依曼计算机的特点 计算机由五大部件组成指令和数据 以同等地位 存于存储器, 可按地址寻访。指令和数据用二进制 表示指令由操作码 和 地址码 组成;存储程序;以运算器 为中心; 2. 硬件框图 存储器&am…

【Java集合】HashSet源码分析

目录 一、Set简介 二、HashSet简介 2.1 简介 2.2 HashSet继承关系 三、源码分析 3.1 成员属性 3.2 构造方法 3.3 添加元素 3.3.1 add()方法 3.3.2 addAll()方法 3.4 删除元素 3.4.1 remove()方法 3.4.2 removeAll()方法 3.5 查询元素 3.5.1 contains()方法 3.5.2 containsAll方…

项目管理:如何编写高质量的Makefile?

文章目录背景熟练掌握 Makefile 语法规划 Makefile 要实现的功能设计合理的 Makefile 结构掌握 Makefile 编写技巧技巧 1:善用通配符和自动变量技巧 2:善用函数技巧 3:依赖需要用到的工具技巧 4:把常用功能放在 /Makefile 中&…

nodeJS - 切换使用淘宝镜像【临时切换、 长期切换】

一、文章引导 #mermaid-svg-zWQadgqvTsLhAes4 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-zWQadgqvTsLhAes4 .error-icon{fill:#552222;}#mermaid-svg-zWQadgqvTsLhAes4 .error-text{fill:#552222;stroke:#55222…

自动驾驶感知——视觉感知经典算法

文章目录1. 车道线检测技术1.1 基于规则的车道线检测技术1.1.1 流程框架1.1.2 预处理模块1.1.3 车道线识别感兴趣区域提取1.1.4 灰度图转化1.1.5 灰度图去噪1.1.6 二值化操作1.1.7 鲁棒性参数估计——RANSAC1.1.8 后处理模块1.1.9 输出1.2 车道线检测技术发展路线2. 目标检测技…

10.图和树基础

一、基本介绍 1.图 图描述的是一些个体之间的关系。这些个体之间既不是前驱后继的顺序关系,也不是祖先后代的层次关系,而是错综复杂的网状关系。我们一般用图G(V,E)G(V,E)G(V,E)来表示,VVV表示结点,EEE表示边。 根据边是否有权值…

爱快软路由安装Docker插件

在爱快云 插件应用中开启Docker插件 在爱快web端页面的[系统设置]->[磁盘管理]->[磁盘分区]设置磁盘分区,选择普通存储,挂载路径名可以随便取。 点击[高级应用]->[插件管理] 点击页面的Docker图标。 启用Docker服务 点击中间的[镜像管理]&…

n皇后问题

n皇后问题 题目: 按照国际象棋的规则,皇后可以攻击与之处在同一行 或同一列 或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的…

基于java的大理旅游系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

professional issue复习

Legal concepts Development of UK law • The Kingdom of England was established in 927. • The Principality of Wales was established in 1216. Common law • Following 1066, a unified system of law (English common law) slowly came into existence. It was “c…

漫谈cgroup

什么是cgroup cgroup 是linux内核的一个功能,用来限制、控制与分离一个进程组的资源(如CPU、内存、磁盘I/O等)。它是由 Google 的两位工程师进行开发的,自 2008 年 1 月正式发布的 Linux 内核 v2.6.24 开始提供此能力。 cgroup …