java培训JavaWeb之字符编码问题

发布时间:2020年03月10日作者:atguigu浏览次数:955

1 编码简介

我们web程序在接收请求并处理过程中,如果不注意编码格式及解码格式,很容易导致中文乱码,引起这个问题的原因到底在哪里?如何解决?我们这个小节将会讨论此问题。

说到这个问题我们先来说一说字符集。

什么是字符集,就是各种字符的集合,包括汉字,英文,标点符号等等。各国都有不同的文字、符号。这些文字符号的集合就叫字符集。

现有的字符集ASCII、GB2312、BIG5、GB18030、Unicode等

这些字符集,集合了很多的字符,然而,字符要以二进制的形式存储在计算机中,我们就需要对其进行编码,将编码后的二进制存入。取出时我们就要对其解码,将二进制解码成我们之前的字符。这个时候我们就需要制定一套编码解码标准。否则就会导致出现混乱,也就是我们的乱码。

2编码与解码

  • 编码:将字符转换为二进制数

汉字

编码方式

编码

二进制

‘中’

GB2312

D6D0

1101 0110-1101 0000

UTF-16

4E2D

0100 1110-0010 1101

UTF-8

E4B8AD

1110 0100-1011 1000-1010 1101

 

  • 解码:将二进制数转换为字符

1110 0100-1011 1000-1010 1101 → E4B8AD → ’中’        

  • 乱码:一段文本,使用A字符集编码,使用B字符集解码,就会产生乱码。所以解决乱码问题的根本方法就是统一编码和解码的字符集。
java培训

java培训

3解决乱码:

解决方法就是统一字符编码。

java培训

java培训

乱码情况:

3.1接收中文请求参数

         1)POST请求:post请求提交了中文。在获取参数值之前,设置请求的解码格式,使其和页面保持一致。我们以后都使用utf-8编码,它也称作万国码,集合了基本所有的字符。

         解决方法:request.setCharacterEncoding(“utf-8”);

         2)GET请求:GET请求参数是在地址后面的。不能使用上述方法。我们需要修改tomcat的配置文件。需要在Server.xml文件修改Connector标签,添加URIEncoding=”utf-8″属性。

java培训

java培训

3.2向浏览器发送有中文字符的响应

         向浏览器发送响应的时候,要告诉浏览器,我使用的字符集是哪个,浏览器就会按照这种方式来解码。如何告诉浏览器响应内容的字符编码方案。很简单。

解决方法:response.setContentType(“text/html;charset=utf-8”);

或者使用这两句组合:

response.setCharacterEncoding(“utf-8”);

response.setHeader(“Content-Type”, “text/html;charset=utf-8”);

我们一般使用response.setContentType(“text/html;charset=utf-8”);

想要了解跟多关于Java培训课程内容欢迎关注尚硅谷Java培训,尚硅谷除了这些技术文章外还有免费的高质量Java培训课程视频供广大学员下载学习


上一篇:
下一篇:
相关课程

java培训 大数据培训 前端培训

关于尚硅谷
教育理念
名师团队
学员心声
资源下载
视频下载
资料下载
工具下载
加入我们
招聘岗位
岗位介绍
招贤纳师
联系我们
全国统一咨询电话:010-56253825
地址:北京市昌平区宏福科技园2号楼3层(北京校区)

深圳市宝安区西部硅谷大厦B座C区一层(深圳校区)

上海市松江区谷阳北路166号大江商厦3层(上海校区)

武汉市东湖高新开发区东湖网谷(武汉校区)

西安市雁塔区和发智能大厦B座3层(西安校区)

成都市成华区北辰星拱青创园综合楼3层(成都校区)