之所以说这是一个疑问是因为我现在还没有搞明白原因,但是有了解决办法。在这里做一个学习过程的记录吧。我在学习王勇老师讲的drp项目,想改写一下项目中的折叠菜单,在网上找了几个模板自己改写,遇到了中文显示的问题,各种乱码。我的MyEclipse软件对html和jsp的编码语言都是GB18030,tomcat的server.xml中设置了URIEncoding=“GB18030”下面贴出来在什么情况下中文显示乱码,什么情况中文可以正确显示:
一、网页中文内容正确显示的html代码:
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb18030" />
二、网页中文内容正确显示的jps代码:
<%@ page language="java" contentType="text/html; charset=gb18030"
pageEncoding="gb18030"%>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb18030" />
三、网页中文内容正确显示的html代码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
四、网页中文内容正确显示的jps代码:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
五、网页中文内容正确显示的html代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
六、网页中文不能正确显示的html代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=gb18030" />
七、网页中文能正确显示的jsp代码
<%@ page language="java" contentType="text/html; charset=gb18030" pageEncoding="gb18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=gb18030" />
八、网页中文能正确显示的jsp代码
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
以上八种情况我都做了测试,五和六两种情况对比中,html页面设置为utf-8就能正确显示页面中的中文,但是字符设置为gb18030页面不能正确显示。根据第七,第八两种情况将该html页面改为jsp后,字符集无论设置为utf-8还是gb18030,页面中的中文都能正确显示。根据上述情况分析,jsp页面只要几处编码设置统一,页面中文均能显示正确。但是对于html页面的中文显示,在添加如下代码时,会发生异常,字符集必须设置为utf-8页面中文才能显示正确。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
原因尚不清楚,求高手解答