黑马day06 jsp之中文乱码原理解决方案

我们可以发现我们的工具eclipse或者myeclipse有很强的功能,我们很少见到jsp页面的乱码问题,这是为什么呢?这是因为eclipse很智能,会根据pageEncoding="UTF-8"这个page指令,保存的时候就会提前预知服务器要使用utf-8进行解码,因此保存的时候会根据pageEncoding="UTF-8"智能的为我们写的jsp保存为utf-8格式.但是当我们使用记事本或者其他文本工具进行开发,就会很容易造成乱码,这里我将详细的分析乱码的原因,以及如何解决乱码。

1.建立一个jsp页面。然后使用浏览器访问。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head><title></title><meta http-equiv=" pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"></head> <body>中国 </body></html>运行结果:

我们发现没有产生乱码,接下来我们将分析这个过程是怎么进行的。

2.开头我已经介绍,eclipse很智能,会高根据pageEncoding="UTF-8"这个指令智能的会把我们保存的jsp文件保存为utf-8。

乱码情况1:

当jsp页面第一次被访问的时候,jsp引擎将jsp文件翻译成servlet,此时如果不明确指定,,jsp引擎默认是使用utf-8进行翻译的,如果当初保存jsp所用的编码和jsp引擎翻译使用的编码不一样就会造成乱码。

jsp页面指令中有一个属性pageEncoding属性,用来通知jsp翻译引擎翻译jsp文件的时候使用什么编码,要想解决第一种乱码,只需将pageEncoding值设置为当初保存jsp页面时的编码就可以了。

乱码情况2:

当翻译过来的Servlet如果要输出中文“中国”到浏览器,因为out相当于response.getWriter(),如果不指定编码服务器发送数据是将字符转为字节时使用的是iso8859-1,另外除了控制服务器使用的编码,还要通知浏览器以什么编码打开才能解决乱码问题。

在jsp的page指令中有一个Content-type属性这个属性在翻译过来的servlet中写上response.setContentType(),从而可以解决第二种乱码问题提。

好消息:

只要设置了pageEncoding属性,自动就会指定Content-type属性与其使用一样的编码。

原理图:

每个人在他的人生发轫之初,总有一段时光,

黑马day06 jsp之中文乱码原理解决方案

相关文章:

你感兴趣的文章:

标签云: