jsp文件为什在page指令标签里设置编码utf-8,浏览器访问才不会中文乱码。在meta里设置没用

我测试了,在<%@page>里设置pageEncoding=utf-8,运行tomcat7,浏览器访问这个hsp不会出现中文乱码。但是在meta标签里设置charset=utf-8却做不到这样的效果,会出现中文乱码?

望采纳!!

首先要明白,

是设置网页文件展示时使用的字符集(编码),那其实除了网页文件展示时有编码以外,网页文件本身还有编码。必须两者统一时才不会乱码。

举个例子(此处用Notepad++为例):

创建一个html文件,用Notepad++打开,先把文档结构写好

test.html代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<h1></h1>
</body>
</html>

写到这儿之后,改变Notepad++的编码,改为GB2312,如下图

img

改好之后再修改test.html文件,修改之后的代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>字符编码测试</title>
</head>
<body>
<h1>你好,世界!</h1>
</body>
</html>

用浏览器查看test.html,效果如下图

img


乱码了对吧?尝试修改网页显示的字符编码,将修改为和Notepad++一致的GB2312

再次查看网页效果

img

这回正确了。

所以你将网页的显示字符集改为UTF-8说明你的编辑器可能采用的时其他字符集,你需要检查一下。

注意:

浏览器也可以设置字符集,不统一也可能导致乱码

一般建议统一使用UTF-8

使用UTF-8你乱码你需要检查到底时哪一步出了错误,是编辑器还是浏览器。

如果说网页时服务器生成的还需要将服务器的编码一并考虑进去

pageEncoding="UTF-8"的作用是设置JSP编译成Servlet时使用的编码。是告知服务器渲染jsp页面需要什么样子的字符编码
charset=”utf-8”是告知浏览器此页面属于什么字符编码格式,这个渲染是交给浏览器引擎渲染,浏览器引擎并不能渲染jsp页面
因此pageEncoding="UTF-8"对jsp页面有效,charset=”utf-8对jsp页面无效