感谢

解决方案 »

  1.   

    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  2.   

    +--------------------------+---------------------------------------------------------+
    | Variable_name            | Value                                                   |
    +--------------------------+---------------------------------------------------------+
    | character_set_client     | utf8                                                    |
    | character_set_connection | utf8                                                    |
    | character_set_database   | utf8                                                    |
    | character_set_filesystem | binary                                                  |
    | character_set_results    | utf8                                                    |
    | character_set_server     | latin1                                                  |
    | character_set_system     | utf8                                                    |
    | character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.1\share\charsets\ |
    +--------------------------+---------------------------------------------------------+我都改成UTF8了,现在直接在数据库里可以插入中文,用控制台插入也是中文了,但是在程序里就不行了,MyEclipse->Preferences->General->Content Types里的项我也都改成uft-8了,my.ini也改成utf-8了,为什么还是不行?
      

  3.   

    character_set_server    这个不知道怎么改了?
      

  4.   

    show create table 显示你的表结构。在你的 程序中执行一下 set names 'utf8';
      

  5.   


    mysql> show create table adpicinfo;
    +-----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table     | Create Table                                                                                                                                                                                                                                                                     |
    +-----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | adpicinfo | CREATE TABLE `adpicinfo` (
      `AdPicID` int(11) NOT NULL AUTO_INCREMENT,
      `AdPicName` varchar(255) DEFAULT NULL,
      `AdPicPicpath` varchar(255) DEFAULT NULL,
      `AdPicClickCount` int(11) DEFAULT NULL,
      PRIMARY KEY (`AdPicID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 |
    +-----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set
    在你的 程序中执行一下 set names 'utf8';
    是 request.setCharacterEncoding("utf-8"); 这样吗?
      

  6.   

    request.setCharacterEncoding("utf-8"); 
    试了,但是貌似没什么用....
      

  7.   

    不是,象执行 update table1 set xxx.. 一样,执行一下 set name 'utf8'
      

  8.   

    你的 java 中是如何执行一条SQL语句的?
      

  9.   

    public void insertAd(PicInfo pi) {
    conn = DataProvider.getConnection();
    PreparedStatement pstsm = null;
    try {
    pstsm = conn.prepareStatement("insert into " +
    "adpicinfo(AdPicID,AdPicName,adPicPicpath,AdPicClickCount) values (null,?,?,0); ");
    pstsm.setString(1, pi.getAdPicName());
    pstsm.setString(2, pi.getAdPicPicpath());
    pstsm.executeUpdate();

    }catch(SQLException ex) {
    ex.printStackTrace();
    } finally {
    try {
    pstsm.close();
    conn.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }

    }
      

  10.   

    那同样的方法执行一下  set name 'utf8'

      

  11.   

     pstsm = conn.prepareStatement("set names 'utf8'" );你不懂java?
      

  12.   

    public void insertAd(PicInfo pi) {
    conn = DataProvider.getConnection();
    PreparedStatement pstsm = null;
    PreparedStatement pstsm2 = null;
    try {
    pstsm2 = conn.prepareStatement("set names 'utf8'" );

    pstsm = conn.prepareStatement("insert into " +
    "adpicinfo(AdPicID,AdPicName,adPicPicpath,AdPicClickCount) values (null,?,?,0); ");  
    pstsm.setString(1, pi.getAdPicName());
    pstsm.setString(2, pi.getAdPicPicpath());
    pstsm2.executeUpdate();
    pstsm.executeUpdate();

    }catch(SQLException ex) {
    ex.printStackTrace();
    } finally {
    try {
    pstsm.close();
    conn.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }

    }这样?
    java.sql.SQLException: Incorrect string value: '\x9D.jpg' for column 'AdPicPicpath' at row 1
    出了个异常,奇怪的是getAdPicName在前面的没报异常,getAdPicPicpath报异常了
      

  13.   

    哎,很郁闷,上次还好好的,mysql的向导运行了一下选编码的时候选了个utf8回来看看my.ini还是latin,像是没运行向导一样,不知道怎么搞的