相信很多人在java web 设计过程中都会遇到中文乱码问题吧! 常出现的问题有:“汉字变成了‘?’”、“显示的中文变成常人无法知晓的东东”......
出现这种现象的原因,概括而言就是不同环节的编码方式不同,导致了转换过程出现了乱码问题!
1.在显示jsp页面时
在每个jsp页面首行添加如下代码即可:
<%@ page language="java" contentType="text/html;charset=utf-8" %>或
<%@ page language="java"pageEncoding="utf-8" %>
这里说明一点,contentType中的charset和pageEncoding的区别:
contentType的是指服务器发送给客户端时的内容编码
是jsp文件本身的编码 (当两者同时声明时,pageEncoding优先级较大!)
2.在获取请求参数时
在通过request对象获取请求的参数及其值时,需进行字符串转换,以支持中文显示,具体代码如下:
<%
String name=(String)request.getParameter("xxx") ;
String namezh=new String(name.getBytes("iso8859-1"),"utf-8");
%>
3.Servlet输出响应
用户在编写Servlet时,需要针对不同的请求方法实现不同的实现接口(如doGet、doPost等接口),在实现这些 接口时需要设置字符集编码 ,以doGet接口为例,具体代码如下:
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
......
}
笔者建议,最好把这两句语句写在函数体的开端!
终于写完了,这是第一篇技术博客哦!作为菜鸟,上述的总结不免有部分不当之处,望各路有才之士指点!多多指教!