欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

解决页面中文乱码问题解析

程序员文章站 2023-10-27 15:30:22
解决页面中文乱码问题 -->中文乱码的原因 以不合适的编码集解码,如文件保存的格式为utf-8解码时使用bgk。 以不支持中文的编码集进行编码,如ios-8859-1 jsp文件响应到的过程...
解决页面中文乱码问题 -->
中文乱码的原因 以不合适的编码集解码,如文件保存的格式为utf-8解码时使用bgk。 以不支持中文的编码集进行编码,如ios-8859-1

jsp文件响应到的过程

解决页面中文乱码问题解析

乱码通常会在引擎预处理阶段和html文件响应到浏览器阶段发生。

jsp引擎预处理分为两个步骤:

检查jsp文件<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%>指令对文件进行解码,解码字符集优先级:pageencoding > contenttype > default 将.jsp文件解析成utf-8格式的.java文件

html文件响应到浏览器

html文档是作为带有字符编码信息的字节流序列在互联网中传送的。字符编码信息可以在随文档发送的http响应头信息中指定(通过web服务器的配置来指定编码参数,为所有text/html类型的文档指定带有正确编码信息的content-type头信息。例如content-type: text/html;charset=utf-8),也可以在文档的 html标签中指定(在html代码中包含http-equiv="content-type"的meta标签)。如果不知道如何构造一个页面的字符,浏览器自然也不能正确地渲染页面。绝大部分浏览器在开始执行任何javascript代码或者绘制页面之前都要缓冲一定数量的字节流(通常为1024字节),缓冲的同时它们也要查找相关的字符编码设定。不同浏览器需要缓冲的字节流数量不同,在缓冲的字节流内如果找不到编码设定,浏览器会以默认的编码对页面开始渲染。如果在开始渲染页面之后才发现指定的编码设定与其默认值不同,都会导致重新解析文档并重绘页面。如果html文件引入了外部资源(例如css\js\media),浏览器会重新对资源进行请求。浏览器对编码参数选择的优先级:contenttype > pageencoding

>meta > default。contenttype和pageencoding会改变http响应头信息。

各个浏览器默认编码:

ie6、ie7、ie8、firefox 默认字符编码:gb2312;

chrome、safari 默认字符编码:iso-8859-1;

opera默认编码:gbk

3.通过url向服务器传递参数时没有方法可以设置它的编码,服务器默认使用iso-8859-1的格式编码,可以通过在tomcat的server.xml中,设置元素的属性uriencoding="utf-8”(默认没有设置此属性),指定uri使用“utf-8”编码方式。获取url的中文参数需要使用

string name =request.getparameter(“name”);

name = newstring(name.getbytes(“iso-8859-1”), “utf-8”);

进行转码。