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

相关推荐

  • VB.NET文件操作语法有哪些

    技术VB.NET文件操作语法有哪些这篇文章主要介绍VB.NET文件操作语法有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.拷贝文件(FileCopy语句)格式:FileCopy(源文件名)

    攻略 2021年12月2日
  • CentOS7源码安装Python、virtualenv虚拟环境安装、uwsgi安装配置

    技术CentOS7源码安装Python、virtualenv虚拟环境安装、uwsgi安装配置 CentOS7源码安装Python、virtualenv虚拟环境安装、uwsgi安装配置一:Python源码

    礼包 2021年11月1日
  • 怎么理解Python的calendar模块

    技术怎么理解Python的calendar模块这篇文章主要介绍“怎么理解Python的calendar模块”,在日常操作中,相信很多人在怎么理解Python的calendar模块问题上存在疑惑,小编查阅了各式资料,整理出

    攻略 2021年11月11日
  • JS日期控件My97DatePicker怎么用(my97datepicker用法)

    技术JS日期控件My97DatePicker怎么用这篇文章主要介绍了JS日期控件My97DatePicker怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解

    攻略 2021年12月20日
  • Hibernate如何连接配置

    技术Hibernate如何连接配置小编给大家分享一下Hibernate如何连接配置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在Hibern

    攻略 2021年12月8日
  • 磁盘I/O的三种方式对比:标准I/O、直接 I/O、mmap

    技术磁盘I/O的三种方式对比:标准I/O、直接 I/O、mmap 磁盘I/O的三种方式对比:标准I/O、直接 I/O、mmap文章目录 @[TOC] 1.引入 1.1 标准I/O 1.2直接I/O 1.

    礼包 2021年11月10日