00:00
那接着我们再说它和另外一个这个数组之间的一个转换,这呢就叫做字节数组。和字节数组。字节呢,我们叫做。嗯,叫做Beta,后边的话呢,咱们讲这个L流的时候呢,就会涉及到这里边儿的一些操作了。TXT3。行,那咱们还是先说一个string吧,哎,把string先转化成这个BA数组string s21等于new,嗯,这个。牛不牛都可以是吧,直接这样写就行啊,ABC写个123,好,ABC123,嗯,现在的话呢,我想把它转换成一个叫哎,BAT类型的数组。
01:05
刚才呢,这叫to char away,那要转换成BA数组呢,To Ba away,很遗憾没有这个方法,哎,这个呢叫调用,哎,String叫get bits,哎,调这个方法,哎,你也别顺了说这个叫get,这个叫get char。不对啊,哎,它这个也很奇怪,没有用,哎,同一套这种规则的名啊,那这呢,我们调这个方法,调一下str一点叫嗯,Get BA叫它,然后我们alt enter一下,生成一个BAT类型的一个数组。那这个数组呢,咱们就可以对他进行一个遍历。便利呢,我们说还可以s outt a瑞点有一个two string嘛,是不是这样也可以。
02:00
哎,我们把这个best扔进去好看一下。哎,你看这时候呢,就出来这几个数,这几个数的话呢,你看诶,其实通过前面几个人知道还是有点眼熟的。小A是不是就是阿斯格玛97啊,哎,九十八九十九,那后边这一呢,相当于这个阿斯格玛里边就是49倍。哎,这就出来了啊,嗯,这是咱们叫STR1啊,那我这要带上一个。中国。这个我把它转换成字节。行不行?你看没报错。行,哎,这个时候呢,转化呢,它其实使用了咱们默认的这个编码集了,哎,其实关于叉型数组这个转化其实比较简单,这块呢,就稍微麻烦一点了啊,因为字节啊,大家知道这个字节的话呢,就真的是这种纯数了啊。
03:04
真的就是纯数了,咱们刚才看到这个小A呢,底层对应的呃,是这个97,呃,因为阿斯码里边是97,但是呢,这个中国的中呢,咱们知道是不存在于阿克码里边的。但是我们现在转换呢,也没有报错哈,我写了两个,写了两个呢,那就是你看是不是这仨一位这仨一个呀,哎,为什么这三个呢,是。咱们当前使用的是不是UTF杠八呀,哎,Utf杠八当中一个汉字呢,就是三位,所以呢,我们把一个中国的,呃,中国一个字呢,就改成了三个了,哎,咱这为什么是utf杠八呢?咱们整个这块当初设置的时候,是不是都用的是UTF杠八的一个环境啊,哎,所以这块呢,就是U杠八了,那你是不是也可以指定用某一种呢,看一下。这块呢,稍微复杂一些啊,这个大家稍微关注一下,这个HR1呢,我们还有这个叫get BA,你看除了咱们用这个默认的方法之外,是不是还有个这个方法,指定一个string形的叫char set name叫字符的,呃字编码级的一个名称,这个呢,我在这编编写一下啊,因为你这没写参数的这种就要使用默认的这个字符编码啊,字符集这样来说啊,进行转换。
04:27
啊进行转换,这个所谓的默认呢,就是咱们当前用的是UTF杠八,那现在呢,我不想用UTF杠八了,我想换一个。JBK。啊,这个关于这个编码集呢,咱们最初讲字符的时候啊,稍微提过一些啊这个呃,咱们这块呢,也不想说把它说的太透,讲到IO流的时候呢,咱们讲那个转换流,呃,给大家呢再稍微的说一说啊这个JBK呢,也是一种中文的编码集,哎,它呢出现了比UTF杠八呢要早,这呢是专门针对于咱们这个这个汉字。
05:07
啊,汉字来进行这个编码的,而且呢,它这里边儿是包含这个简体字繁体字都有啊,啊那么JBK,它这个要用它转,因为你这是默认的,他一般转化不会有问题,你这呢是非得要让他用这个,那有可能我这个K假设有的人记不清了,写成O了,根本就没有这种编码机,那这时候呢,它就可能会抛个异常啊,哎,所以呢,人家这个抛异常呢,我们也很好理解,Al enter,此时呢,咱就给它抛出去吧。哎,就是不支持的一种编码机,就是你这个写的可能不对啊,这是JBK,然后alt enter一下返回一个,嗯,Best啊就叫JBKS吧它了,那同样的我们把它呢输出一下。CRC放到这,大家看一下。出来了。
06:00
出来以后呢,你会发现前面这块呢都没问题,而且还都一样。说明咱们在这是用的UTF杠八,这个UTF杠八和我们JBK他们这里边儿在指定这个abcd这些字符的时候呢,对它和咱们这个X码呢是一样的。那一样最好了,这样的话呢,大家就都不会出现乱码的问题了,嗯,后边呢,你会发现短了。相当于一个汉字,是不是这用两个来表示的。啊,就是在咱们这个JBK当中,这呢相当于是一个呃,小知识点啊,大家目前做一个了解就行,这呢咱们是使用JBK这个字符集,哎,进行进行叫编码。哎,这呢,其实又提到一个概念叫编码啊,这个大家呢,先了解一下啊,编码还有一个概念叫做解码。
07:04
一个叫编码,一个叫解码,什么叫编码呢?编码现在咱们是不是从这个字符串把它转化为是不是这个这个字节呀。字节数组或者我简称就叫字节了,从字符串转换成字节,字符串呢是我们能看得懂的一些东西啊,那你字节呢,就是底层的那种二进制的数了,像这儿呢,你能看到它,你说诶这是中国。肯定不知道是吧,嗯,所以呢,你可以理解成就是这块呢,就是我们对应的就叫字节了,或者大家呢,可以形象点理解,什么叫做编码呢,就是把它呢,从我们能看得懂的啊,转化为你看不懂的,看不懂的就是底层计算机在存储时候的二进制。二进制这个数据。啊,这个呢,我们理解为呢,叫一个编码。嗯,那对应过来叫解码,那就是它的一个逆过程,嗯,编码的这个逆过程,那就相当于从这个字节对再转换为咱们的叫字符串,那那相当于就是从我们看不懂的这个二进制的数据。
08:20
哎,你给他再转换为哎,咱们能看得懂的这个字符,哎,能看得懂的这个东西,哎不一定非得是字符串了。比如说大家呢,嗯,以前有没有下载过一些电影。啊,这个电影什么呢?就是你下载完以后呢,它这个格式有的时候很特别,你这块一打开的时候呢,它这块说缺少这个解码器。是吧,啊,有的时候会提示这个事儿,因为呢,这里边儿存在都是一些二进制文件,你现在呢,想让它呈现出来的一些画面,一些视频,那这时候呢,你得告诉我,我怎么去解析你这里边这个二进制的数据,这不就相当于是从看不懂的到能看得懂吗?你总不能里边截取一段这个二进制,你说哇,这个画面好漂亮,因为你疯了呢是吧?哎,这时候呢,你根本看不懂这个数据啊,能看得懂啊,是因为呢,有这个解码器帮你解析了啊,这就叫一个解码的过程啊,那么要这样说的话呢,大家想我这个把string转换成BY的数组,实际上这就是不是就是编码。
09:21
对吧,哎一会儿呢,咱们反过来这个,哎逆过程。就是由这个BA数组转换为对咱们这个,哎,String呢,这就是个解码啊。哎,这叫解码。这个呢,注意针对咱们这个叫BAT的数组啊,这个叉这块就就别说这叫编码解码了,你这个你解完以后,你这里边这不还是那个这个能看得懂吗?所以这个呢,不叫编码了,编完以后还能看得懂,这不行啊,诶你这个HH在底层还得去对应二进制到那个层面的,那才叫一个编码的啊。
10:02
行,那额外的话呢,大家也能看到,就是我们这个JBK当中,咱们一个汉字是不是占两个字节啊,在UTF杠八当中呢,它就占三个字节了。啊,没办法,那实际上你这个JDK呢,是咱们这个中国人这块指定的,那我们又不涉及到什么非洲啊,什么什么欧洲啊那样的一些特殊字符了,所以咱们用两个就能存了,那你utf杠八呢,你把全世界基本上各个国家这种文字都涵盖进来了,那他这个体量就很大了,分配到咱们中国这块的时候呢,那就是诶三个字节,诶让你充当一个汉字了,那导致的问题的就是咱们你要打开一个文本的话呢,原来你要用JPK这个文本会稍微小一些。那你现在换成这个UCL杠八了,是不是就文本就稍微大一些了,因为一个汉字呢,多占了一个字节嘛。哎,就这个意思啊,哎,在咱们这里呢,默认的这个字符集呢,是UTF杠八,我就不往这写了啊,是因为我这用的UC杠八,大家呢,如果要是不是UTF杠八,我写在这容易误导你啊,哎这呢我就是就写成叫默认的了,行,这呢是一个叫编码。
11:11
啊叫编码啊,那么它的一个逆过程。逆过程呢叫解码,也是我们所谓的将带T型的数组转换成string,这个跟这个差型数组一样啊,仍然是调用我们string的构造器。看一下。我这呢写一个啊,直接呢new啊string new string用它CL out斜杠,这呢我们是一个BAT数组。下边都是,嗯,这呢,就是你指定我我不想全转,我只想从这开始转转指定长度格,那你就用这些方法,那我这呢,就先你看这个,显然这是默认的啊,这是不是还有一个。
12:01
嗯,还有一个指定是不是某一个,这个应该是看看这个是吧,是不是指定某一种这个编码集或者叫字符集的一种方式啊。对的啊,那咱们就先调一下这个所谓的这个,诶错了啊,先点一下,先调一下这个吧,这个呢,我们呃把谁放进去呢,我是把这个best词放进去。大家注意小心一点,注意看这个事儿啊,这这是又有点难度了,我这儿呢,用的是默认的字符集进行的,哎,转换转换有点这个犯法了,是不是进行的编码,哎,我现在呢,哎,我把这个best放进去,得到的是一个死string。啊,我这是不是进行的解码呀,而且这时候没有指定,相当于你是不是还用的默认的好CTRLCCTRLV。诶进行的解码。好,那这时候呢,我们看一下这个数据。
13:06
看这样就回来了,ABC123中国从我们看不懂的,刚才你那个这不就是它吗?这个你看不懂,结果呢,我给你解析还原了,你能看得懂了,哦,原来是这个数据啊,我们编码用的是默认的,在我这个当中是UTF杠八,这呢我也是用UTF杠八给它在解析的,没有毛病,那大家看啊,我转化谁呢?我转化它啊,New一个string,我把这个JBKS。扔进去。ITR3。好看一下。这就叫乱码。那为什么会有乱码呢?诶因为咱们这个你编码的时候呢,用的是JPK,哎你解析的时候呢,按说是不是也应该用JPK啊对,但是你这时候用的不是,诶不是呢,它就会出现这个乱码,这不就跟诶跟大家说的,我这呢用的是UTL杠发的这种编码集了,诶这里边有很多的汉字,然后我把这个呢文件发给大家了,大家呢,你去打开的时候呢,发现你这是乱码。
14:24
那是因为呢,你看我这我咔咔咔,这就相当于是在编辑啊,我在编辑,我点一下保存,你说我这时候是编码了还是解码了。我点了保存了,是不是编码啊,我现在呢,这些数据一开始是不是都在内存当中,然后我点一保存不是就存储到我这个磁盘的文件里了。这呢我进行的叫编码啊,你就想象我这能看得懂的,我编码完以后,底层存的都是0101看不懂了啊,这呢叫编码,然后呢,把这个文件发给你了,你呢要打开,你打开的时候呢,是从看不懂的到能看得懂,对这就是解码。
15:04
啊,我编码用的是UTF杠八,那你要想解码的时候也不会出问题。那必须呢也用utf杠八,那如果你要没事,如果你那还是用的这个JBK啊,大家这块写小写写大写都可以,你要用的是JBK的话呢,这呢就会出现乱码,哎,就是编码和解码的这个编码集不一样。这种问题不管在咱们基础基础中会出现,大家呢,在这个讲web的时候呢,仍然会出现啊,就是浏览器,这是后台的服务器,这是数据库,然后呢,从这个浏览器这块呢,发送这个数据给后台,后台呢把这个数据存到数据库里了,整个从前往后这个编码机全都得一样。我从数据库中呢,提出一个数据到我们后台这儿,然后后台呢又传给我们的前端,前前后后的这个编码机全部都得一样,否则呢就会出现乱码。哎,这个都要求是一致的啊,所以呢,我们会看到这里边啊出现乱码。
16:05
哎,原因就是编码集和解码集。哎,不一致。哎,不一致导致的啊,这个我们就保留一下它了,那么对于我们这个JBKS来讲,它编的时候呢,用的是JBK,那我们要想让它这个解析的时候呢,不会有问题。咱们呢,就得用这个。啊,我们这里边呢,是不是有一个。这个是吧,你让它指定用某种这个字符集的进行解析,首先呢,把这个GPPSCTRLC,诶扔进去逗号一下,然后在这个位置呢,你指定是不是就得写JBK了,诶out enter一下STR4。好,这个我们看一下是不是呢,能够正常解析。
17:02
你看这不就出来了吗?呃,这呢,就相当于是没有出现乱码啊,原因呢,就是一直懒。嗯,原因啊,编码级和这个解码级是一致的,哎,这样就OK了啊,嗯,这个呢,咱们就相当于多说了几句啊,嗯,这个往这块转呢,我们叫编码,往这块呢叫解码,要想呢,这个编码的时候呢,其实还好啊,就是你编过去以后,你指定一个编码集,然后解析的时候呢,我们要求解码,解码集跟那个编码集要一致啊,这个我们把这个写成一个说明啊。呃,说呢,这个在解码时,哎,咱们呢,要求这个解码使用的这个或者叫字符集,简称呢叫解码集,必须与这个编码时。使用的。这个字符集一致。
18:03
那否则啊,会出现乱码。嗯,这个事儿的话呢,不仅仅是应用在咱们现在这字始终大家写程序,只要出现乱码了,都去想这个编码集是不是一致造成的啊就可以了,行。
我来说两句