计算机用二进制编码来表示字符。二进制编码的类型不只有一种,常用的有 UTF-8、GB2312、GB18030、Windows 1252 等等。不同的编码类型采用不同的编码格式,很多编码类型是不兼容的。同一段二进制编码数据,如果使用错误的编码类型读取时,就可能显示成错误的字符,这也就是乱码的根源。

字符读取

字符读取是采用指定的编码类型将二进制编码数据读取为字符。比如二进制数据“C3 8C C3 86”,使用 UTF-8 编码类型读取时表示为字符“唐”。

字符读取是只读的,不会改变原本的二进制数据。

简单的乱码

仅仅只是读取数据时采用了错误的编码类型,是一种最简单的情况。这种情况只要切换到正确的编码类型后再进行读取就可以了。

我们常见的乱码会比较复杂,通常是使用错误的编码类型读取数据后,又进行了编码转换。

编码转换

编码转换是使用不同的编码类型来表示相同的字符。比如“唐”的 UTF-8 编码是“E5 94 90”,转换为 GB18030 编码后变为“CC C6”,但是仍然表示“唐”。

复杂情况的分析

下面举个例子描述比较复杂的情况:

  1. 一个 GB18030 编码的字符“唐”的二进制数据是“CC C6”;
  2. 使用 Windows 1252 编码类型来读取时,显示的字符不是“唐”,是“ÌÆ”;
  3. 将“ÌÆ”转换成 UTF-8 编码,二进制数据变成了“C3 8C C3 86”。

这个时候,我们再使用任何编码类型都无法正确读出“唐”这个字符。因为数据本身已经错了,怎么读也不可能得到原本的信息。换句话说,“C3 8C C3 86”这个二进制数据在任何编码类型中都对应不上“唐”这个字符。

产生这种乱码情况的简化过程如下:

【GB18030:唐( CC C6)】 —读取为–> 【Windws 1252:ÌÆ(CC C6)】 —转换为–> 【UTF-8:ÌÆ(C3 8C C3 86)】

解决方案是倒推回去,如下:

【UTF-8:ÌÆ(C3 8C C3 86)】—转换为–> 【Windws 1252:ÌÆ(CC C6)】 —读取为–> 【GB18030:唐( CC C6)】

如果还是要使用 UTF-8 编码显示,则如下:

【UTF-8:ÌÆ(C3 8C C3 86)】—转换为–> 【Windws 1252:ÌÆ(CC C6)】 —读取为–> 【GB18030:唐( CC C6)】 —转换为–> 【UTF-8:唐( E5 94 90)】

UltraEdit 编辑器的使用

可使用 UltraEdit 编辑器来查看不同编码下的字符显示,也可以查看字符的二进制数据和进行编码转换。

1、使用不同编码类型来查看

在底部的状态栏可以切换不同编码类型来显示文本。

注意:Windws 1252 在 ANSI 分类中,名称为“1252(ANSI拉丁语 I)”

2、查看二进制数据

文档右键菜单中有个“十六进制编辑”,可以查看十六进制数据,快捷键是“CTRL+H”。

注意:在计算机中,二进制数据通常使用十六进制来表示。

3、编码转换

通过菜单“文件 > 转换”来进行编码转换。

注意:Windws 1252 也属于 ASCII 编码,切换选择时要注意。

一段看不懂的乱码字符_字符乱码的解读相关推荐

  1. 求一段看不懂的乱码_求一对乱七八糟表示废话的符号!急急急急急急!

    展开全部 1.×&%¥e69da5e887aa62616964757a686964616f31333433636136#@-- 2.§№☆●◎□◆○◎★▲△■※£¤¢℃¥ξοωχυλβιμητ ...

  2. LOL登录服务器显示看不懂的文字,LOL乱码怎么办?解决方法介绍_LOL进游戏就出现看不懂的字怎么办_牛游戏网...

    英雄联盟昨天晚上出现了网络波动的故障,导致了很多玩家,数据丢包,进入游戏不显示人物以及屏幕乱码等等问题,官网已经进行了迅速的修复工作.但是在我们玩游戏的游戏还是会不时的出现乱码,这类原因就是因为自己的 ...

  3. 看不懂简明python教程_简明python教程之Python文件头注释的含义,你肯定不懂

    https://www.xin3721.com/eschool/pythonxin3721/ 本文档描述了Python语言文件头里典型注释的含义. 1. 指定解释器 不管在linux还是在window ...

  4. 看不懂论文代码怎么办_学位论文中的公式排版(制表位+mathtype+域)

    写在前面 为什么把公式排版单独拉出来写一篇文章呢? 因为公式排版实在是太难了.公式居中+标号右对齐,简直反人类好么.在学校期间一直寻找方便的公式排版+自动编号方法,但搜索出来的大多只是用到了制表位,公 ...

  5. 字符串_字符串数组_字符_字符数组

    1.字符串 由String类型定义的变量,一个变量代表一个字符串 String str="12345679"; 做题时,遇到输入为一字符串,需要对其进行分割操作时,将字符串各个字符 ...

  6. 输入单个空格字符_字符美化丶替换丶转换

    清除字符格式函数CLEAN函数 CLEAN函数的作用是清除打印机不能打印的字符 TRIM函数 TRIM函数的作用是清除字符前后的空格 不清除中间的单个空格 中间两个空格清除只剩一个 替换字符函数SUB ...

  7. python无法打印unicode编码_【整理】Python中实际上已经得到了正确的Unicode或某种编码的字符,但是看起来或打印出来却是乱码...

    [背景] Python中的字符编码,其实的确有点复杂. 再加上,不同的开发环境和工具中,显示的逻辑和效果又不太相同,尤其是,中文的,初级用户,最常遇到的: (1)在Python自带的IDE:IDLE中 ...

  8. sas 检测到开型代码语句的递归_对于标准答案的递归很多人都看不懂,其实就是一个深度优先的遍历。我写了段伪代码,将递归步骤还原并注释了一下,供大家参考,希望大家有所收获。...

    源自:7-5 Python之递归函数 对于标准答案的递归很多人都看不懂,其实就是一个深度优先的遍历.我写了段伪代码,将递归步骤还原并注释了一下,供大家参考,希望大家有所收获. #if条件不成立的省略 ...

  9. 字符编码看不懂你来打我!(ASCII,Unicode,Utf-8,GB2312…)

    这篇文章估计有些年头了,但作者确实将字符编码的发展历程介绍的很到位,偶然看到,突然觉得"相逢恨晚",故转载--,也当做自己的收藏吧. 字符编码的问题看似很小,经常被技术人员忽视,但 ...

  10. 闪灯什么意思_开车碰见别人闪灯知道是什么意思吗?看不懂不要说自己会开车哦...

    现在有车的人很多,慢慢的也会接触到很多车友届的暗语,有很多人不明白这些暗语的意思,还以为是开玩笑的,所以就不予理会,其实这里面的内涵还是很深的,真正懂得了这些才能向老司机迈进.以前有段友在开车会面的时 ...

最新文章

  1. 某程序员吐槽:女朋友老板给她包了1314元开工红包,正常吗?网友:这是绿包!...
  2. 我在互联网大厂,和同事谈恋爱
  3. BottomNavigationView+ViewPager+Fragment仿微信底部导航栏
  4. 在ORACLE中对存储过程加密
  5. php 读写文件 file_put_contents() 与 file_get_contents() 函数用法
  6. JQuery中的html(),text(),val()区别
  7. Event 系列: jquery event 源码
  8. mfc 子窗体任何消息都不触发_winform让窗体一直显示在桌面上以及FindWindow
  9. C++rat maze老鼠迷宫算法(附完整源码)
  10. 文献记录(part30)--DCR Disentangled component representation for sketch generation
  11. 自动判断PC端、手机端跳往不同的域名JS实现代码
  12. 《绝地求生》外挂源代码被公布,或迎神仙大战时代?
  13. C/C++的内存泄漏检测工具Valgrind memcheck的使用经历
  14. php使用adodb下载,ADODB的使用
  15. h5页面 判断网页是否由微信或qq内置浏览器打开
  16. 距离度量 —— 切比雪夫距离(Chebyshev Distance)
  17. PPT中去除水印的方法
  18. RIM Hong Kong地址和地图
  19. Linux磁盘空间被占用的释放方法
  20. 比较全的sql表关联图

热门文章

  1. 毕设题目:Matlab语音识别
  2. 毕设题目:Matlab验证码识别
  3. 【图像提取】基于matlab PCA-CSIFT feature图像特征提取【含Matlab源码 1174期】
  4. 【车间调度】基于matlab粒子群算法求解车间调度问题【含Matlab源码 013期】
  5. Latex:利用BibTeX批量导入参考文献
  6. C++string的查找和替换
  7. 计算机应用基础模块3实操题正确答案,国开20秋计算机应用基础作业3 模块4 PowerPoint 2010实操题答案...
  8. mysql commit慢_MySQL慢日志中COMMIT事件
  9. date比较大小 mybatis_面试官:给我说说你使用Mybatis的过程中遇到过哪些坑?
  10. PHP面试题:HTTP中POST、GET、PUT、DELETE方式的区别