试试进行编码之间的转化。 
String newStr = new String(oldStr.getBytes("字符集1"),"字符集2");
然后输出,oldStr和newStr就可以知道是不是乱码了。 
字符集指的是gb2312,iso8859-1。
尝试一下,自己动手,丰衣足食。

解决方案 »

  1.   

    reg_ok.jsp文件里加一句request.setCharacterEncoding("GB2312");//转换编码
      

  2.   

    直接用一下代码:
    String username=new String(getParameter("username").get("ISO8859_1"));
    绝对可以,从数据库读出时
    只需要:
    String username=rs.getString("username");
    不需要转马,都时中文
      

  3.   

    String username=new String(request.getParameter("username").get("ISO8859_1"));
      

  4.   

    在每一个JSP文件中写上下面的代码,或者将下面的代码保存在一个jsp文件中,然后每个文件都include它:
    <%@ page contentType="text/html;charSet=GB2312" language="java" import="java.sql.*" %>
    <%
    request.setCharacterEncoding("GB2312" );
    %>有三点需要注意:1。charSet中的S必须要大写!!!!!!!!!!必须大写!!!!!!!!
    2。只要一个文件包含表单或需要向别的jsp文件传递参数,都有那段代码或include有那段代码的文件。
    3。以上在WinXP+Tomcat+MySQL上测试通过。别的平台应该也没有太大问题。
      

  5.   

    charSet这个S真是害死人了,谢谢!
      

  6.   

    1、对于数据库乱码的解决思路:
    首先判断数据库中的数据是什么编码;
    根据数据库的编码然后进行相应的编码转换;比如:oracle的数据编码是:ISO8859_1(版本817),然后在输出的时候就要进行如下的转换:
    String Str1=new String(rs.getString("aaa").getBytes("ISO8859_1"),"gb2312");2、在网页中加入如下的代码:
    <%@ page contentType="text/html;charset=gb2312"%>但是这样做往往只是网页上的文字可以正常显示了,通过表单提交上去的中文仍然不能显示出来.目前的jsp&servlet中都已经支持两个方法,所以解决的办法是在每页中加入两行代码:response.setContentType("text/html;charset=gb2312");
    request.setCharacterEncoding("gb2312");通过这样的方法,无论是表单的还是网页的都能正常显示!
      

  7.   

    1。charSet中的S必须要大写!!!!!!!!!!必须大写!!!!!!!!
    2。只要一个文件包含表单或需要向别的jsp文件传递参数,都有那段代码或include有那段代码的文件。
    3。以上在WinXP+Tomcat+MySQL上测试通过。别的平台应该也没有太大问题。
    --------------------------------------------------------------------
    我的数据库为sqlserver2000,如果charSet中的s大写,读出来的的数据就乱码,不大写S就正常!