这页面加入
<%@page language="java" contentType="text/html;charset=gb2312" %>
取值转换
String value=new String(request.getParameter("searchName").getBytes("gb2312"),"ISO-88590-1");
从数据库中读的时候不用转。

解决方案 »

  1.   

    楼上的,我读的时候转和不转都是乱码啊!
    (刚才写了半天关于session的一点小心的突然没了,郁闷)
    反正这样:(献给和我一样的菜鸟们)session.setAtrrbute("name[i][j]",name)通常我们看到类似name[i][j]这样的形式都以为是二位数组,结论是在session中仍然是个普通变量,并非数组,所以你用双重循环对他进行赋值的时候得到只是最后一次循环给他的值
      

  2.   

    你的意思是说我写入数据库的时候就该转换?如果数据库中显示的是中文那么取出来就不用转换也可以用,是这样吗?
    好,我回答:我写入数据库的方法用两种:1,在JSP页面通过ISO8859转换后写入数据库,数据库中显示是中文,但是用rs取出结果集显示是乱码;2,我直接在数据库中插入中文记录,数据库中显示是中文,但是用rs取出结果集显示是乱码,郁闷吧
    对了,说一下我的环境:resin3.0_+windwos XP +sql server2000
      

  3.   

    我没有遇到你这个问题,你在每个页面都写上GB2312那一段,从POST取数据的时候就先转。
      

  4.   

    1.搂主需要定义jsp的执行编码,因为resin默认的可不是GBK或者GB2312,这就像你的名字的姓一样
    他是个标志
    <%@page language="java" contentType="text/html;charset=GBK" %>
    你用request.getParameter()一切ok了。不会乱码的,包括post & get,如果你发现get方式获得的是乱码,问题多出在你的url上,url是一个特殊的部分,有时你可以发现url的参数就是一个中文
    (此时getParameter()正常),有时是%AB%16的urf-8数据(此时getParameter()正常),有时是乱码(这是getParameter()显然会错误,因为url上已经乱码了,你需要确定你的url是否有问题)你说你重数据库读出来的都是乱码..问题的关键还是出在1中所说的问题,搂主在问题中一直没有提到过这个地方,因为此事如果你未设置<%@page...%>那么你的jsp是在一个非中文环境下运行的,为什么?如果以后出了中国人自己的jsp服务器你就知道了(因为resin不是我们做的)。
    这里我说一下html定义的和jsp定义的有什么区别,
    html定义的
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    这一串其实是由jsp生成出来的,所以他不能告诉jsp容器该如何定义字符集,他只是告诉浏览器我的html是用的什么字符集
    而1中的方法才是定义jsp使用何种字符集的2.关于那个session的问题,楼主对程序的编写上有一些误区
    session.setAttribute("name[i][j]",name);
    //你已将"name[i][j]"定义成了一个字符串,他已不再是变量名了!String[][] name = new String[2][3];
    //name[0][1]和"name[0][1]"完全是2个东西.
    name[0][1] = "name[0][1]";  //不知道楼主看到这里是否能想起什么
    name[1][2] = "lastname";
    session.setAttribute("name",name);
    String[][] s_name =(String[][])session.getAttribute("name");
    out.println(s_name[0][1]);
    out.println(s_name[1][2]);
    打印的结果应该是:
    name[0][1] lastname
      

  5.   

    这里我说一下html定义的和jsp定义的有什么区别,
    html定义的
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    这一串其实是由jsp生成出来的,所以他不能告诉jsp容器该如何定义字符集,他只是告诉浏览器我的html是用的什么字符集
    而1中的方法才是定义jsp使用何种字符集的
    ---------------------------
    一针见血啊,其实第一位回复的朋友提出来的时候我去运行的时候就感觉有些变化了,只是但是没有把<%@page....%>放在<head></head>里面,好像放不放到里面是有点关系的,现在中文问题是解决了,不过对requet.getParameter()转换内码后我运行的时候出现空指针了不知道为什么!我在前一页里传过来的时候URL正如您所说的,变量刚好是中文名:http://127.0.0.1:8088/lunwefdn1/booksearch.jsp?searchName=微观经济学///
    -----------------
    2.刚才我重现翻书找到关于session的,正如楼上所说的session.setAttribute("name",newname)里的前面那个name并非是变量,他只是一个名字而已.session对象是一个名字/值的集合,感谢两位高手的帮忙啊3.我想给分,但是我又不知道是不是给分结帐之后,后面的朋友就不能进来讨论或者过几天就会被删贴呢,那样和我一样的菜鸟就不能学到东西了,楼上顺便说说这个给分的问题吧,哈哈
      

  6.   

    节贴以后好像不能回复了,按照csdn只保留最新的,这个贴子 == 沉了requet.getParameter()不需要转换,这借用就好了
    <%@page... %>放在第一行
    out.println(request.getParameter("searchName"));//区分大小写
      

  7.   

    <%@page language="java" contentType="text/html;charset=gb2312" %>