Servlet接收表单传过来的中文值,再转发时,出现乱码的问题

 

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%  String message = "Hello World!";
    String msg = (String)request.getAttribute("msg");
    if(msg != null && !msg.equals(""))
    {
        message = msg;
    }
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'helloworld.jsp' starting page</title>
  </head>
  
  <body>
    <%=message %>
    <form action="servlet/HelloServlet" method="post">
        <input type="text" name="name"/>
        <input type="submit" value="提交"/> 
    </form>
  </body>
</html>

 

 

package lee;


import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {
  public void service(HttpServletRequest request,
            HttpServletResponse response)
            throws IOException{
        String msg = null;
        String name = request.getParameter("name");
        request.setCharacterEncoding("GBK");
        if(name != null && !name.equals(""))
        {
            msg = "Hello " + name;
        }
        request.setAttribute("msg", msg);
        RequestDispatcher rd = request.getRequestDispatcher("/Hello/helloworld.jsp");
        rd.forward(request, response);
        
    }
    
}

小弟是Java web的初学者,今天学习时,写了一个简单的应用来测试servlet的页面转发功能,问题是: 当输入中文时,会出现乱码,不是编码的问题,这个我试过了,请问各位高手这是什么原因呢,怎么改呢?请指点指点,让大家见笑了。

7个回答

再试试这个,你看看我的博客把myeclipse的编码方式改下看看行不,如果不行的话那你要不加个过滤器吧,那样还能重用了。

http://ethen.iteye.com/admin/blogs/797775
你参考下这个吧,希望对你有帮助!

如果是用tomcat服务器的话,试试修改
在server.xml的
或者全部页面,服务器的编码都使用UTF-8,

<%@ page language="java" pageEncoding="UTF-8"%>你把html页面换成jsp页面,jsp页面的顶部有个我上面写的东东,那个是编码方式,utf-8包容所有的类型。

最好用jsp页面因为他上面有编码方式,另外所有页面的pageEncoding必须都是一致的,例如要是utf-8就都是utf-8,要为其他的就都为其他的。

或者你不想吧html页面改成jsp页面,那就在servlet中加上这个也管事,request.setContentType("text/html;charset=utf-8")

解决了吧

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!