为什么idea输出会乱码

技术为什么idea输出会乱码这篇文章主要介绍“为什么idea输出会乱码”,在日常操作中,相信很多人在为什么idea输出会乱码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”为什么idea输出

本文主要介绍“为什么idea的输出乱码”。在日常操作中,相信很多人对于idea的输出为什么乱码有疑问。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮助大家解决“idea的输出为什么乱码”的疑惑。接下来,请和边肖一起学习!

前言

相信大家都遇到过乱码的人物。今天女朋友着急的走过来问我:“亲爱的,我的创意怎么输出乱码的字符?”

一次手术后我为他做得很好,但三兰亭是我女朋友,我的好奇心和我一样,所以让我来。

为什么idea输出会乱码

那为什么会有乱码字符呢?

什么是编码,什么是解码?

什么是字符编码,什么是字符集?

为什么会有Unicode?UTF-8和GBK有什么区别?

三歪坐在我腿上,撒娇似的告诉我这一系列问题。我喜欢粉,但更喜欢女朋友,所以有了这篇文章。

为什么会有乱码?我们知道只有0和1组成的字节流存储在计算机中,但只有数字不能满足我们的需求。我们还需要文本处理等等。然而,计算机只知道数字,所以我们需要告诉计算机什么数字代表什么字符。

例如,如果我为A指定0000,为B指定0001,计算机就会知道,所以如果我想将字符AB存储在计算机中,实际存储是0000001,这实际上相当于为每个字符定制一个唯一的代码。

但这是我的指定。不同的人有不同的想法。比如小明喜欢A的1000,b的1111,然后小明的电脑按照他指定的编码方式,也就是1000 1111存储,然后传到我的电脑上。我得到了1000 1111,根据我的编码可能是%,这是乱码。

所以乱码的本质就是编码和解码不对应。

有些学生可能不熟悉编码和解码的概念。让我解释一下:

编码:其实就是把字符按照一定的格式转换成字节流的过程。

解码:就是把字节流解析成字符。

可以看出,随机编码会导致每台计算机都无法正确解析的情况,所以需要有一个标准,每个人都会根据那个标准指定字符和数字的对应关系。

标准字符编码

美国国家标准协会ANSI制定了一个标准,即美国信息交换标准代码(ASCII),规定了常用字符集和对应数字的集合,例如65代表a。

为什么idea输出会乱码

ASCII实际上是一个7位代码,在二进制代码中的意思是000000 ~ 1111111,但是一个字节是8位,所以通常用8位存储。可以看出ASCII代表128个字符,实际上是美国代码。你可以看到在同样说英语的英国,ASCII中没有英镑标记。

有韩国的,日本的等等,更不用说我们中国人了。

一个字节最多只能代表256个字符,对我们来说是不够的,需要扩展。比如GB2312是我们国家标准局发布的《信息交换用汉字编码字符集》,后来GBK发布了,就是扩容的意思。在GB2312的基础上增加了繁体字等多种文字。

所以这就意味着每个国家都有自己的标准,因为语言不同,字符集不同,使得计算机之间的文档交流非常困难,所以我们又开始了一波标准化的浪潮。

比如美国的ANSI组织制定了ANSI标准字符编码,实际上是平台默认编码。比如中文操作系统使用GBK,如果在美国使用ASCII,操作系统会预装这些标准字符集。

但是,这只能解决一个文档由一个字符编码的问题。假设我的文档里有日语、法语、德语、俄语和汉语,你说呢?

Unicode

因此,创建了另一个Unicode,也称为统一代码、通用代码和单一代码。

Unicode字符集涵盖了人类目前使用的所有字符,每个字符都被统一编号并分配了唯一的字符代码。你看,这种事总得有人做,不然统一不了。

下面我将解释几个术语,让大家更清楚。

人物:其实就像英文字母,或者我们中文叫人物。

字符集:即字符和数字的集合。

字符码:是字符集内字符对应的数字或数字。例如,在ASCII字符集中,A的字符代码是65。

字符编码:是根据字符集内字符与数字的映射关系转换成字节流的实现。

ul>

对于 Unicode 而言有一点和之前的编码不太一样,它将字符集和编码实现解耦了。

之前的编码比如 ASCII 编码、GBK  编码等等,它们的字符集和编码实现是绑死的,你可以理解成以前的编码其实就是查表,有一个固定的表格里面存储这字符和对应固定的二进制,比如 A 对应的编号是  65,其二进制序列就是 01000001。

而 Unicode 不一样,它将字符集和字符编码实现分开了,比如 A 对应的编号是 65,但是对应的二进制序列就不一定了,得看具体的字符编码,如果是  UTF-8 编码,则是 01000001,如果是 UTF-16 编码(大端),则是 00000000 01000001。

为什么idea输出会乱码

这其实也是为什么我们现在常用 UTF-8 而不是 UTF-16 的原因,可以看到 UTF-16 编码存储效率较低,最少使用两个字节,并且像 C  语言的很多函数都会将 0x00 字节作为字符串的停止符来解析,所以才搞了个 UTF-8,其使用 1~4  字节为每个字符编码,是变长的,具体如何编码的我就不说了,随便查一下就有。

到此,关于“为什么idea输出会乱码”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/49663.html

(0)

相关推荐

  • 如何用Python爬取小红书

    技术如何用Python爬取小红书如何用Python爬取小红书,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。小红书首先,我们打开之前大家配置好的charles

    攻略 2021年10月26日
  • 39三分之一是多少码,码数码数38又三分之一是什么意

    技术39三分之一是多少码,码数码数38又三分之一是什么意是欧洲鞋码的表示方式,是介于37和38之间,三分之一就是更靠近37码。阿迪的鞋子尺码不是以0.5进位的,是以2/3进位的,因此就会出现41又1/3,41又1/3等鞋

    生活 2021年10月20日
  • 苹果日历怎么添加生日,正点日历怎么添加好友生日

    技术苹果日历怎么添加生日,正点日历怎么添加好友生日在正点日历app中,不仅包含有我们日常使用的阳历苹果日历怎么添加生日、农历日历查询功能,并且我们还能够设置每位重要好友的生日,对于一些新手用户来说,刚刚使用正点日历却不知

    生活 2021年10月20日
  • 使用awk比较两个文件的内容

    技术使用awk比较两个文件的内容 使用awk比较两个文件的内容干货记录
    [Linux] 使用awk比较两个文件的内容
    当需要比较A , B两个文件 , A文件中存在 , 并且把也在B文件中存在的行去除掉

    礼包 2021年11月20日
  • Flutter和Web生态是怎么对接的

    技术Flutter和Web生态是怎么对接的本篇内容介绍了“Flutter和Web生态是怎么对接的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔

    攻略 2021年11月19日
  • UML对象图的示例分析

    技术UML对象图的示例分析这篇文章给大家分享的是有关UML对象图的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.UML对象图对象图用于描述被建模系统的模型元素实例之间的结构化信息,

    攻略 2021年12月3日