ibatis 保存修改时都是乱码?   这个问题困恼了我好几天,我很清楚要保证不是乱码,要从html页面一直到数据库,   都为一种编码,我用的是UTF-8,从页面到java程序,再到数据库,所有的设置都查过了   但是还是乱码!我用的技术框架是spring + ibatis + mysql,在我本地运行都很正常,但放到租用的虚拟空间保存修改时就出现乱码。数据库连接的配置文件:jdbcUrl=jdbc:mysql://127.0.0.1:3306/newdb?useUnicode=TRUE&characterEncoding=utf8
user=root
password=123456
minPoolSize=5
maxPoolSize=50注册页:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>注册页面</title>
<meta http-equiv="keywords" content="" />
<meta http-equiv="description" content="" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="verify-v1" content="Bc3Pi9T36s2ZJxgj0Kycbd1JFj93kMytn2SIS23d6OI=" />
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="Book" href="/favicon.ico" /></head>
<body>
 <form id="form1" name="form1" method="post" action="/register.go?action=gotoRegPage">
  <p>用户名:
    <label>
    <input type="text" name="userName" />
    </label>
  </p>
  <p>密码:
    <label>
    <input type="text" name="password1" />
    </label>
  </p>
  <p>确认密码:
    <label>
    <input type="text" name="password2" />
    </label>
  </p>
<p>昵称:
    <label>
    <input type="text" name="nikeName" />
    </label>
  </p>
  <p>
    <label>
    <input type="submit" name="Submit" value="提交" />
    </label>
  </p>
</form>
</body>
</html>控制器文件:
.....
ROUser rOUser = new ROUser();
rOUser.setNikename(nikeName);
rOUser.setPassword(password);
rOUser.setUserName(userName);
int isSave = userService.addNewUser(rOUser);
......POUser.xml  文件:
......
<insert id="saveUser" parameterClass="poUser">
insert into
tb4user(user_id,user_name,nikename,password)
values(#userId#,#userName#,#nikename#,#password#)
</insert>不知我这样描述得清楚没?这个问题困扰了我好多天,本地运行得好好的,但放到租用的虚拟服务器上就出问题,各位好心的大哥大姐帮忙看看怎么解决。

解决方案 »

  1.   

    服务器什么编码与我的编码不配呢?tomcat还是mysql,虚拟服务器上有的设置我改不了的
      

  2.   

    应该是MYSQL字符集不是UTF-8,我前两天会了同样的问题,你参考下
    http://topic.csdn.net/u/20110110/16/807f9b6b-3a50-45fc-98f6-c8aea2ab14a1.html
      

  3.   

    设置一下HttpServletResponse返回的字符集,还有页面的UTF-8改成gbk,试一下 
      

  4.   

    我所有的地方都是用UTF8的,我本地运行得很好,不知为什么放到虚拟服务器上就出这个问题,虚拟服务器有是租用别人的空间,不好设置mysql的配置文件,虚拟服务器提供商说只要我的数据库连接指定了字符集就不会有问题,但是我也已经指定了,还是不行
      

  5.   

    login页面显示是不是乱码?如果是,那就是虚拟服务商那边不支持。
    例如maiba.us这个免费的地方,就不支持utf-8,不管你怎么设置,默认显示的都是gb2312,就算是utf-8的东西,在他那里都变成了gb2312
      

  6.   

    页面显示的不是乱码,就是保存数据时是乱码,就算我保存的数据不是在页面接收的,在java文件中直截这样写:
    POUser user = new POUser();
    user.setNikename(new String("小米".getBytes("iso8859-1"),"utf8"));
    this.getSqlMapClient().insert("saveUser", user);
    在数据库中"小米"还是变成"??"
      

  7.   

    这样的话,就是服务器端接收的数据不是用UTF-8了,spring那里不知道怎么用,但如用Servlet,可以写一个过滤器,或者在doGet, doPost里设置request.setCharacterEncoding("UTF-8"),指明使用UTF-8来接收浏览器端传来的数据。
      

  8.   

    我在工程的web.xml里有设置的: 
    <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>
    org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
    <param-name>forceEncoding</param-name>
    <param-value>true</param-value>
    </init-param>
    </filter>
      

  9.   

    我数据库、表也都设为utf-8了的
      

  10.   

    我数据库、表也都设为utf-8了的
      

  11.   

    你看看你取值的时候是不是乱码!!!乱码问题大多出现在数据传输过程中!!!处理数据的dao类把数据System.out.println下!!!
      

  12.   

    楼主用的是不是mysql啊 我也碰到了,而且是毕业设计,跟你同样的情况,到现在也没改过来
      

  13.   

    如果保存到数据库里是乱码,但是这些乱码在你的程序中显示出来却不是乱码,那就说明接收到的编码与数据库编码不一致导致的,在这里想办法,因为前不久我也遇到过这个问题,当时Servlet接收的是iso8859-1(我也以为这里也是utf-8,因为我设置了Tomcat的connector为utf-8,实际这里只影响get,对post无效),而我的前台和数据库使用的都是utf-8。
      

  14.   

    问题终于与虚拟主机的技术员协商解决了。原来是设置客户端编码的造成的,我上面的数据库连接jdbcUrl=jdbc:mysql://127.0.0.1:3306/newdb?useUnicode=TRUE&amp;characterEncoding=utf8,我是单独放在一个database.properties文件中的,别的服务器是把客户端编码默认设置成了 utf8,而他们的没改这个设置,默认的是iso8859,造成 useUnicode characterEncoding这两个参数没起作用,所以把数据库连接改成这样:
    jdbcUrl=jdbc:mysql://127.0.0.1:3306/newdb?useUnicode=TRUE&characterEncoding=utf8就可以了,细仔看看有什么差别没,“&amp;”改成“&”,唉,一个符号引发的悲剧呀。