小弟遇到一个问题:
doGet()里头是:
response.setContentType("text/html;charset=gb2312");
String name=request.getParameter("name");
PrintWriter out=response.getWriter();
out.println("你好,"+name);
out.close();
在IE地址栏输入:http://localhost:8080/myapp/WelcomeServlet?name=张三
输出是:你好,????如果把上面代码中的response.setContentType("text/html;charset=gb2312");这句话去掉,
输出是:???张三这个是什么问题呢?而且问号的个数不一致,请大家帮帮小弟啊。
在线等

解决方案 »

  1.   

    在你的servlet中加上这句:
     request.setCharacterEncoding("gb2312");
    就得了.不行的话,再回复...
      

  2.   

    加个函数转换:public String code2String(String str) {
    String s = str;
    try {
    byte temp[] = s.getBytes("ISO-8859-1");
    s = new String(temp);
    return s;
    }
    catch(Exception e) {
    return s;
    }
    }
      

  3.   

    四、多字符集的处理
    1、
    //用byte数组和字符集构造String对象
    String info = new String(request.getParameter("username").getBytes("8859_1"),"GB2312");
    2、
    request.setCharacterEncoding("GBK");
    String str = request.getParameter("data");
    3、
    <%@ page contentType="text/html; charset=GBK"%>
    4、
    response.setCharacterEncoding("GBK");