WEB开发常见的中文乱码情况及其解决方案

WEB开发常见的中文乱码情况及其解决方案

在使用JSP时,经常会有中文显示乱码的现象,这里对常见的中文乱码的情况及其解决方案做一个汇总。一般出现中文乱码的场合有显示JSP页面,request对象获取请求参数,Servlet输出响应以及与数据库交互等。

一、乱码现象及原因

通常出现中文乱码的现象如下所示:
- 汉字变成了问号“?”
- 有的汉字显示错误,有的则显示正确
- 显示的中文不可读
出现乱码主要是因为字符集编码的问题。
JAVA的内核是Unicode的,也就是说,在程序处理字符时是用Unicode来表示字符的;但同时文件和流的保存方式是使用字节流的。在JAVA的基本数据类型中,char是Unicode的,而byte是字节,因此在不同的环节JAVA要对字节流和char进行转换。
同时JAVA又是根据操作系统的默认编码字符集来决定字符串的初始编码,而且JAVA系统的输入和输出的都是采取操作系统的默认编码。所以当运行JAVA程序时,如果字符集的编码选择不当,就会出现乱码问题。

二、方案列举

在掌握了JAVA系统中文乱码的原因后,就能从根本上解决这个比较麻烦的问题。这里针对上面提到的出现场合,提出相对应的解决方案。

1、在显示JSP页面的时候

在显示JSP页面上解决中文乱码是一个比较简单的技巧,只需要在每一个页面的第一行添加如下代码即可。
<%@ page language="java" contentType="text/html;charset=gb2312"%>

2、在获取请求参数的时候

在通过request对象获取请求的参数及其值时,需要将获取后的参数及其值进行字符串转换,以支持中文显示,具体代码如下所示:
<%
    String name=(String) request.getParameter("uid");
    String namezh=new String(name.getBytes("iso8859-1")); 
%>
除了获取请求外,对于其他JSP内置对象的获取参数,例如config对象获取配置参数,都可以采用如上方式将其转换,在这里不一一列举。

3、Servlet输出响应

用户在编写Servlet时,需要针对不同的请求方法实现不同的处理接口,如处理HTTP GET方法的doGet接口,处理HTTP POST方法的doPost接口等。在实现这些接口时,设置字符集的方法类似,这里只以doGet接口为例,代码如下所示:
public void doGet(HttpServletRequest request,HttpServletResponse)
            throws ServletException,I/OException{
        request.setCharacterEncoding("gb2312");
        request.setContentType("text/html;charset=gb2312");
        ....            
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值