粉丝1191获赞8430


使用计算机的过程中,我们经常遇到乱码的情况,那么乱码是怎么回事呢?如果你上网查询,会有成吨的专业术语扑面而来,他呢反而更加迷糊。今天我就用通俗易懂的方式给大家讲讲文字。瑞克乱码 我们知道,计算机诞生在美国最初的作用就是用来做数学计算,比如炮弹的弹道什么的。渐渐的,人们需要用计算机来处理文字,可是计算机内部存储的全是二进制的零和一,他们啊,这是数字。那么怎么用数字来表示文字呢? 计算机前面们一拍脑袋,在震落几根头发的同时,想出了一个好办法。虽然美国人在做研究和说瞎话时用到的单词很多,但都是由二十六个字母组成的。只要能用数字来代表每一个字母,计算机就能处理文字了。于是在前面们设计了一张超级简单的表,他只有两列, 第一列是二十六个字母,第二列则是给每个字母分配一个数字,成为该字母的编码。考虑到实际使用,这张表里有塞进了标点符号、阿拉伯数字什么的,总共也就一百来个。由于在计算机内,一个字节可以表示到数字上面是零到二百五十五,所以每个字母用一个字节表示就足够了。 举个例子,大写字母 a 在这张表上的编码是六十五,那么当计算机处理文字时,如果读到数字六十五,就会打印字母 a。 这种字母的编码表听起来不够配合,于是前面们给这张表取了个名字,美国信息交换标准码,他的缩写是阿斯 k。 注意发现啊,这个词不念阿斯克,也不念阿斯卡,念阿斯 ki。 让我们再审视一下这张表的名字,美国信息交换标准吗?啊!不由得 感叹,就算是聪明绝顶的计算机前辈,也会犯下目光短浅的错误啊!随着时间的推移,计算机在世界范围内传播开来,中国、日本、韩国等很多国家都用上了计算机,这些国家也要涉及自己的文字编码表。于是我们中国也搞了一张表,叫做 gbk。 这表长得和阿斯 k 挺像,都是两列,只不过这张表有一点点大,不是一百多,而是两万多。因为我们公司常用的汉字就有三千多个,加上各种生僻字有几万个,这几万个汉字都要分配数字多,他们那边吗? 这是麻烦来了,一个字节最多只能表示两百五十六个数字,完全不够用。这时就必须要用两个字节了,因为两个字节能表示的范围是零到六万五千多,足够为 gdk 表中的每一个汉字分配一遍吗?举个例子,汉字草在 gbk 表中的编号是四、五、七、八、九,按照习惯一般写成十六进制的形式, b、 二、 d、 d。 我们可以用 word 软件来验证一下,在 word 里输入字母 x, 表示十六进制的意思,紧接着输入 b、 二、 d、 d, 然后按一下 alt 加 x, 我们发现 word 会自动识别出来这是个草字。 顺便说一下,我们 w 用的 windows 系统处理字符时默认使用的就是 gbt 表,它还有个昵称叫 ansi。 如果你们用基础版保存文件的时候, 可以看到这里有一个默认的字符编码选项,它就是 ansi。 话说我们达陆用的是 gbk 表啊。香港、台湾的编也单独设计了一个表,叫做 b 个五表。 此外,日本、韩国也都有对应本国文字的表,因为是各自独立设计的表,显然不会那么巧,同一个字在上面三张表上对应了同样的 数字,变好基本是不可能的。举个例子,比如我收到一个文本文件 a 点 text, 这个文件是在台湾那边的计算机上编辑的。我打开一看,卧槽,这是个啥?不要慌,冷静分析。既然是台湾来的文本文件,那么在创建这个文本文件时,很可能参考的就是贝格五表。 而我的文本编辑器默认是参照 g、 b、 k 表在处理文字的。于是我手动指定文本编辑器参照 big 五表在处理。 这下显示就正常了,原来是两个字,投币。嗯,你们都懂我的意思吧。 从这个例子可以看到,文件 a 点 text 在台湾被创建时,那里的 windows 默认会参找 big 五表,将每个汉字对应的编码存储到文件里。可是在我这里打开文件时,我的 windows 会读取这些编码,并默认查找 ppt 表来反推这是哪个字,结果显示的就是这样一坨乱七八糟的无意义文字,我们称之为乱码,以此类推。中国和韩国、日本的文件交换也可能出现乱码的情况。 windows 和 linux 系统之间交换文件时,也可能出现乱码的情况。所以什么是乱码 都有同样的数字编号,却用不同的对照表来反推查对应的文字,结果当然不一样啊。 为了解决各国建造乱码问题,有个爱管闲事的国际组织又另起炉灶,搞了一张超级大的表,叫做 unicorden, 他可以包含一百多万的支付,把全人类的支付,包括非洲原始部落刻在石头上的支付收入进来都没问题。注意啊,这一百多万指的是最大容量,不是说实际上真有这么多支付,他这样设计呢,倒是很省心。但是跟随着问题来了,如何给其中每个支付搞个标 编码呢?如果像之前那样简单的按顺序分配数字编码,这一百多万个字符得用三个字节来表示。欧美那帮人是不同意的,毕竟他们的语言只要一个字节就可以用三个字节,太浪费。于是接下来的一些年,出现了好几种分配数字编码的不同方法,场面一度非常混乱。 终于,随着时间的推移,大浪淘沙,有一种叫做 utf 八的方法,渐渐强妙的 pro, 它的最大特点是长度可编,对于欧美的字符,只要一个字句就能表达,而中文需要三个字句,比 gbk 要多用一个字句。 不过呢,既然世界上大家都在用,那么以多一个自觉的代价换来天下无马啊!不是天下无乱马,那也是值了。 顺便说一下, python 语言默认的就是 u t f 八变码,当你不小心将元代码以 d p t 的格式把分时, python 处理起来就会爆破。解决方法也很简单,把它念成为 u t f 八格式即可。老师啊,都看到这里了,点个赞!

我们经常遇到坐标文件导入到首部后文字乱码情况,这是因为大多数县府部提供的坐标文件文字字符编码是 utf 杠八,而首部的是 ansi, 两者是不一致的,就会出现乱码的情况,修改成仪器的就可以解决。 今天就来介绍两种方法,轻松搞定文字装满。方法一,打开首付项目软件,设置文字编码更改为 utm 杠八, 文字不会直接更改,需要重新导入坐摇文件。 方法二,在电脑上打开数据文件,点击文件,点击另存为,在文件格式下面 编码更改为 ansi, 重新导入即可。 nice 其他方法欢迎留言区讨论!



啊,大家好,我是天宫啊,今天的话分享一个关于乱码的问题,就是从内存中有理有据分析,乱码就是乱码的话,主要是因为解码和编码是不同的系统所导致了他不一致,所以形成的乱码。 啊,今天的话是从内存的一个角度,从内存中取数据,然后保存到文件,通过文件解析出来的一个呃编码来解决乱码问题。 啊,其实这是呃解决乱码的一个前提条件,只有你知道原始数据是什么编码,那你才知道怎么去转到当前的编码,比如说原始数据是 uniq 的编码,当前的编码是,呃,就是呃几比二三加二的一个中文的一个编码,那么只有知道两 的一个呃不同编码才知道具体采用呃变成语言的对应方法进行一个呃数据的转换。 呃,在这里的话,呃,我们构建了一个代码,代码的话数据来自于这个 deat 店。呃, tst, 呃,写了一个测试 pes, 让我们注意一下,就是测试文本和我们的一个测试的编码,测试编码是 ansi, 这是它的原始数据的编码。 呃,我们可以第八个以下,第八个以下的话,我们可以看到这个 da 是从文本里面读出来的,然后他在调试之后可以看到,呃 他的那个右侧,右侧的话,那个特色的前面几个呃方块的话,其实就是因为没有正确的识别出那个中文,就是那个测试的中文。呃,在这里的话,我们可以看一下这个对他在呃内存中的一个二进制的一个表现。 呃,我们可以把它跟二进制以十六进制的形式呃拷贝一下,呃,我们先在这里面先准备两个呃空的文本文件,特色一和特色的二,然后的话把那个刚才拷贝的呃二进制 放到这个特色的一的文本当中,这里是以二进制的形式存到这个特色一,所以要用这种温黑色这种二进制工具啊保存一下, 然后的话我们其实往下面进行,看到一个三十八分,那么我们右侧的看也看得到他的那个三十八分的呃,他能够正确的显示出中文, 呃。然后同样的我们可以看一下他的那个二进制,二进制的话,呃,把他同样的拷贝他的十六进制数据放到啊刚才的那个 k 四二,现在 k 四二的啊文本的文件当中,以二进制的形式给呃放进去,然后保存, 呃。然后我们所放下窗口看一下我们的一个文件情况,我们可以看得到,呃。其实这个 tena 就像刚才放到了对应的那个特色音啊文件里面去,他的二进制数据放到他里面去了, 然后我们的三十八分的话放到了 tc 二的这个文本文件中,他们都是以二进去的形式啊放到他们里面去的,然后我们看一下 tctc 一的话,呃会看到 他的测试,然后我们可以看一下他的编码,此时他的编码就是 ansi 的,呃,他是从那个 ansi 的那个文本里面取出来的嘛,就是说他的那个二进去,其实对那编码就是 an 内存当中的那个二定制,也就是恰尔心对应的一个底下的那个内存数据, 呃。这个 size 八分,呃。打开的话就是对应的特斯特二的文文文件当中的呃数据,它被解析出来是 u t f 杠八,也就是说三十八分在内存中的二键式数据是 u t f 杠八编码的 呃,今天的分享就在这里,也就是说呃,当我们知道我们的数据在内存中是什么编码,然后我们 当前使用的编码是什么编码,只有清楚编码的一个原始和最终目标的情况下,你才能够更快的呃去搜索,或者说根据你的呃了解,在你的编程语言中选取对应的呃编码状 方法,而不是说靠网上各种经验各种猜,然后呃可能部分编码就是说解决了问题,但是你们如果没有猜到搞搞错,但是如果说你没有正确的去理解的话,可能就是很难做到兼容性的一个匹配。好,今天的分享就到这里,谢谢大家。