要写中文字符到数据库当中,要用那个类型的数据啊?我用string和byte[]都是过,不行啊?是不是可能涉及到字符的编码问题?请教!

解决方案 »

  1.   

    都可以啊,不过读出来的时候都要重新编码
    如用Varchar的话,可进行如下转换String str=rs.getString("name");(rs为ResultSet)
    byte[] tmp=str.getBytes("ISO-8859-1");
    String  str=new String(tmp,"GB2312");
    把它转换为gb2312就正常了
      

  2.   

    java通过JDBC访问mysql5中文乱码问题:mysql5初始化时的字符集不为gbk或者utf8这种包含了中文字符的字符集时,在mysql5命令行模式下用select * from tablename 看到的字符是??,但仅仅是在这里看上去这样,如果java和数据表都是gbk,那么java通过
    jdbc:mysql://0.0.0.0:3306/try?useUnicode=true&characterEncoding=gbk
    这样的url访问mysql中字符集是gbk的数据表,无论读写都正常所以在用java+mysql(没用tomcat什么的,如果要用也要改它们的配置)时,只要
    1.在mysql中表的字符集设置为gbk(不是这种格式可以将数据导出为utf8,然后再转换为gb2312),建表时就可以create table xxx(..) charset=gbk;
    2.在java程序中url写成jdbc:mysql://0.0.0.0:3306/try?useUnicode=true&characterEncoding=gbk这样如果希望mysql5命令行模式下也能看到那些??,设定mysql5的字符集为gbk