是的
乱码一种是页面级的,一种是与数据库有关的.
我有个类可以转换字符集
package db;
import java.util.*;
public class isoToGbk{
public static String ToGbk(String  str){
try{
if (str!= null ) {
        byte[] bt1 = str.getBytes("ISO8859_1");//用ISO8859_1进行编码
        str = new String(bt1,"GBK");//用GBK进行解码,构建1个新的字符串  
        }else str = "";
        
}catch(Exception e){
e.printStackTrace();
}
        return str;
}
}

解决方案 »

  1.   

    我试过用getBytes进行编码的转换,可是在程序里我用的sql语句好象就编译有问题啊。
    String qusetion_ID = request.getParameter("qusetion_ID");
    String answer_ID   = request.getParameter("answer_ID");
    String answer_con  = request.getParameter("answer_con");%>
    <jsp:useBean id="mysql" scope="page" class="com.jsp.mysql" />
    <% mysql.executeUpdate("Insert Into answer(qusetion_ID,answer_ID,vote_num,answer_con) VALUES (\""+qusetion_ID+"\",\""+answer_ID+"\",\""+0+"\",\""+answer_con+"\")");%>
    我把answer_con用getBytes 做变换,好象sql语句就无法编译识别啊?
      

  2.   

    有的时候,添加“&useUnicode=true&characterEncoding=GBK”就会出问题,因为你的字符设置和数据库的有排斥。
      

  3.   

    用"characterEncoding=unicode"试一下
      

  4.   

    试过了 还是不可以!可读取的时候一直是好的啊中文显示,就是输入中文的时候就变成只显示问号了。我数据库里的属性是char这个有问题不啊??
      

  5.   

    偶也遇到过同样的问题。
    1)MySql数据库编码方式没改啊,默认好象是latin,在%MYSQL%\目录下一个叫*.ini的文件,修改里面的characterEncoding="gb2312"就可以了.然后再重新创建数据库和表.
    2)或者在创建表时,Create子句后添加characterEncoding="gb2312"也是可以的.
      

  6.   

    请问楼上的具体是哪里的ini文件啊
      

  7.   

    mySQL安装目录下有一个叫my.ini