最开始是,插入数据库,中文自动变成了"????"
于是,按网上的方法,将msql数据库中的my.ini,将character-set-server=UTF-8,然后连接字符串jdbc.url=jdbc:mysql://localhost:3306/yiyi?useUnicode=true&characterEncoding=UTF-8
然后却发现只要插入中文就会报错,然后插入英文是没问题的import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.yiyi.shop.DAO.UserDao;
import com.yiyi.shop.domain.User;
public class UnitTest {

public static void main(String[] args){
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userdao = (UserDao)ctx.getBean("userdao");
User user = new User();
user.setUsername("fin");
user.setPassword("789");
user.setTelephone("12131241");
user.setEmail("[email protected]");
user.setAddress("中国");
userdao.saveUser(user);

}}
错误是:
2011-11-13 21:12:55,813 WARN [org.hibernate.util.JDBCExceptionReporter] - SQL Error: 1366, SQLState: HY000
2011-11-13 21:12:55,813 ERROR [org.hibernate.util.JDBCExceptionReporter] - Incorrect string value: '\xE6\x88\x91\xE7\x88\xB1...' for column 'address' at row 1

解决方案 »

  1.   

    是不是你保存‘中国’到数据库时的‘中国’变成乱码了,debug试试
      

  2.   

    建表的时候用控制台来实现,default charset=utf8;CREATE TABLE user(
    username varchar(20) not null,
    password varchar(20) not null,
    --add your SQL statement here
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
      

  3.   

    这个错的意思就是它不认识UTF-8字符。配置应该修改为:
    default-character-set=UTF-8且改完启动后数据库是需要重新建的。
      

  4.   

    [client]
    default-character-set=utf
    port=3306[mysql]default-character-set=gbk