00:00
好。我不知道咱们大家留意了没有。我们在说这个请求参数的时候,这样我们运行一下这个程序。呃,在这儿大家看我给这儿。假设。我之前给大家演示的是不是一直填的都是。英文的。是吧,拼音的是吧。那么。现在我填成中文的。行不行呢?我们看一下。这好像没问题,看这。看到没?
01:00
这出现什么了?这,这是什么呀,乱七八糟的。这就是乱码。我们下边就来学习中文乱码问题的解决。那么先来看乱码的产生。咱们关于乱码的产生啊,这样重新写一个程序。我们拷贝它啊。哎,17。我们叫charactercoding。
02:06
这个呢,我们不写这么复杂了。删掉。就要个姓名和年龄。所以这儿呢,也就不写这么复杂了。我就获取姓名和年龄。这样啊,这年龄呢,我就也不弄这么复杂了。好。这年龄啊。就直接是字符串了。没问题吧?
03:02
好。那下边跑一下这个程序。蕾丝。23。注册。是不是乱码了,那如果说我正常。李四。这是没问题的。是不是,但这个乱码它为什么会产生呢?是因为。我们看一下我这个页面是什么字符编码,是不是就像杠八呀,我们从这看。啊,从这这儿看不见,这个版本的这儿看不见。
04:03
那我们看这查看字符编码。哎,不是这啊这个。查看。查看字符编码。是不是UNO的?要他刚办吗?Unicode码对吧,这是没问题的,你在这儿输入了李四汉字。这是UNO的嘛,你注意,不管你这是汉字也好,还是拼音也好,还是英文也好,不管你是什么,只要你。一提交这个请求。经过浏览器,经过IP协议,那么这个内容,你提交的这些内容都会变成。字节。
05:01
为什么呢?是因为我们HTTP协议它的底层的数据传输协议使用的是TCP协议。TCP协议我们看着这给大家写的比较详细啊。是因为IP协议底层使用的是TCP传输协议,TCP大家看传输控制协议,它是一种面向连接的,可靠的,基于基于字节流的,基于字节流的。通信协议。他是自己。所以不管你这儿提交的是什么内容,他都将以字节的形式精神传输。从哪儿可以看到?大家看。打开it watch。我记录。走。大家看到这儿没?你看这个name,我给你拷贝过来。
06:06
先贴这。放大点。看到没?这name等于什么?是不是就在这儿啊,这后边的内容我就可以删掉了啊,这就是这个name,这是什么东西啊?他是什么?在请求里边这些字节都是以它开头,百分号开头,并以16进制的形式出现,就这样,你看就这个东西,这是一个字节。这一共几个,123456。是不是六个字节。诶,为什么是六个字节,是因为UTF-八。咱们的UTF-八这种编码,一个汉字一般情况下是占三个字节,你注意是一般,就是我们能够见到的绝大多数汉字都是这样三个字节的。
07:08
啊,这个我在这儿不再多说啊,关于UTF-八,关于字符编码我在这儿不再细讲,因为UTF-八这种编码,我们的汉字一般占三到四个字节。你就他妈杠八。他将utf。我将这个UTF啊,将这个unicode嘛,分成了六个区,这个我们的汉字站三区到四区这两个区。也就是三个字节到四个字节,这个我就不再多说了,如果你想了解详细的内容,大家可以。参考。啊,有我Rico主编的。由清华大学出版社出版的。Java零基础教程。好。
08:00
那么。这里边就说了,你看我李四俩汉字啊,一个汉字三个三个字节,所以这是是不是就六个字节呀,我这儿这是六个字节就有了。那他会把这个数据传输给他开的服务器,他们开的服务器接收到以后,接收到请求以后,是不是要对请求进行解析啊,那解析的时候,当它解析到这儿的时候。他可不知道你原来用的什么编码。那怎么办?他会按照他自己的编码。对其进行解码。什么意思?他自己的编码是什么?他自己的编码?他们开的服务器默认的编码是ISO8859-幺。这种编码不支持汉字。
09:02
所以你看到的就是乱码。就是这种乱码。这就是乱码产生的原因。所以啊。我们乱码之所以产生,是因为你的页面使用的U-八,而他开的服务器。把它按照ISO8859-幺。进行了解码。那所以就会出现乱码。这是大家首先要知道乱码是如何产生的,它产生的原因,知道了这个原因了,我们才能把这个乱码问题给他解决掉。
我来说两句