昇 这个字mysql里面显示正常  java里面sql找出来就是乱码了。怎么解决?求高手赐教~~~

解决方案 »

  1.   

    declare @t table([Name] nvarchar(10))
    insert @t select N'昇'
    select * from @t
    /*
    Name       
    ---------- 

    */
      

  2.   

    你的mysql设置的字符集是什么,GBK?
    试试这个方法: public  String toCharSet(String str)
         {
         
             if(str==null)
              return "";
           
             try
             {
              byte b[]=str.getBytes("ISO-8859-1");
             str=new String(b);         }
             catch (Exception e)
             {         
               e.printStackTrace();
             }
             return str;    
         } 
      

  3.   

    http://topic.csdn.net/u/20071124/08/3b7eae69-ed1d-4a77-8895-9930bf3601af.html 
      

  4.   

    我的意思是 一般的中文字都好的  特殊的生僻字就不行了  数据库里显示正常的  用java类查出来就乱码了  2楼的方法也不行
      

  5.   

    另我的mysql 字符集 gb2312    现在mysql字符集是不能改的,有什么办法在java里处理??能解决的我加分啊
      

  6.   

    在程序中设置字符集为UTF8、OR GB2312
    SET NAMES 'GB2312'
    SET CHARACTER SET GB2312
      

  7.   

    SET CHARACTER SET GB2312  这个放在哪?比如我的sql 是  select * from name where 1=1
      

  8.   

    放在你的程序中,连接MYSQL成功后,紧接着运行
      

  9.   

    那就设置UTF8 OR GBK试试
      

  10.   

    package cn.tohot.xmkf.wjczj;import java.io.UnsupportedEncodingException;import junit.framework.TestCase;public class TestCharset extends TestCase {
    public void testChar(){

    try {
    String a = new String("誌".getBytes(),"GB2312");
    System.out.println(a);
    a = new String(a.getBytes("GBK"),"GBK");//改这
    System.out.println(a);
    } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    来个测试例子:
    第2个println要输出正确的“誌”,只能改 a = new String(a.getBytes("GBK"),"GBK");  怎么搞法?
      

  11.   

    呵呵,这是程序,你要解决的是从MYSQL中的表取汉字出来是乱码的问题,
    连接MYSQL,设置字符集为UTF8,取表中字段的内容,看看结果
      

  12.   

    连接MYSQL取数是封装起来的。。用的jar包。。我能改的只能从这改的上面只是模拟数据库取数,然后对取出来的数(其实已经是乱码了)进行个转换搞成正常的
      

  13.   

    说明白点就是
    String a = new String("誌".getBytes(),"GB2312");
    //这里添加处理代码
    //............
    //............
    System.out.println(a); //最后显示   誌不管你什么代码 只要最后显示正确即可~~
      

  14.   

    可能有两个原因: 第一是字符编码和校对集问题,若是GBK编码,校对集也要正确,请参考我的Blog
    http://blog.csdn.net/jackem/archive/2008/07/25/2710686.aspx另外一个原因是5.0的mysql的JDBC驱动程序有个bug,当你的编码是Asiic编码的时候,在驱动程序里面会进行编码转换导致某些字出错,我们是修改了JDBC驱动代码解决的,你可以Debug一下看看是不是这个问题,好象是在com.mysql.jdbc.SingleByteCharsetConverter 这段代码里.
    另外确认一下你的数据库编码是否正确,可以使用
    show variables like 'char%';
    show variables like 'coll%';
    检查一下编码是否真的是GBK
      

  15.   

    GBK不行那就是字库的问题了,更新你的中文字库
      

  16.   

    1、
    mysql>SET NAMES 'utf8'; 
    mysql>select * from mytable limit 0,10; 
    mysql>SET NAMES '你的字符集'; 
    mysql>select * from mytable limit 0,10; 
    。。 2、
    // 数据链接部分自己写吧。 
    $link = 你的数据库链接; 
    mysql_select_db($mydb, $link); mysql_query("SET NAMES 'utf8'",$link); //关键是这里,我给了个utf8字符集,你用utf8替换成你知道的字符集. $sql = "select * from mytable limit 0,10 "; 
    $results = mysql_query($sql,$link); 
    $allcount = $this->num_rows($results); 
    if($allcount > 0) 

      for(;$count < $allcount; $count++) 
      { 
    $data[$count] = $this->fetch_array($results); 
      } 

    print_r($data);