为什么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)

相关推荐

  • PostgreSQL的相似搜索插件有哪些

    技术PostgreSQL的相似搜索插件有哪些这篇文章主要介绍“PostgreSQL的相似搜索插件有哪些”,在日常操作中,相信很多人在PostgreSQL的相似搜索插件有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好

    攻略 2021年11月10日
  • Bytom猜测合约的使用方法是什么?

    技术Bytom猜谜合约使用方法是什么本篇内容介绍了“Bytom猜谜合约使用方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够

    攻略 2021年12月20日
  • 如何进行MySQL表结构的导入和导出

    技术如何进行MySQL表结构的导入和导出本篇文章给大家分享的是有关如何进行MySQL表结构的导入和导出,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。MySQ

    攻略 2021年10月25日
  • MySQL DROP TABLE删除表报错'ERROR 1051 (42S02): Unknown table'怎么办

    技术MySQL DROP TABLE删除表报错ERROR 1051 (42S02): Unknown table怎么办这篇文章主要介绍了MySQL DROP TABLE删除表报错ERROR 1051 (42S02): U

    攻略 2021年11月2日
  • Hadoop HDFS分布式文件系统怎么理解

    技术Hadoop HDFS分布式文件系统怎么理解本篇内容介绍了“Hadoop HDFS分布式文件系统怎么理解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧

    攻略 2021年12月9日
  • VBS如何打开当前脚本所在文件夹

    技术VBS如何打开当前脚本所在文件夹小编给大家分享一下VBS如何打开当前脚本所在文件夹,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!方法一:W

    攻略 2021年11月1日