JSP网页里是charset=UTF-8:
<%@ page contentType="text/html; charset=UTF-8" language="java" import="java.sql.*" errorPage="error.jsp" %>Mysql5的数据库也设成了UTF-8,可为啥通过JSP网页存取数据库,中文还是乱码?

解决方案 »

  1.   

    你在取数据的时候有告诉mysql你用什么编码取吗?mysql默认的是lan1,虽然你在表里面存的是utf8
      

  2.   

    在所有语句前加上:set names utf8
      

  3.   

    +--------------------------+-------------------------------------------+
    | 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     | utf8                                      |
    | character_set_system     | utf8                                      |
    | character_sets_dir       | C:\MySQL\MySQL Server 5.0\share\charsets\ |
    +--------------------------+-------------------------------------------+
    以上character_set都是UTF-8么?
    再写入数据库时characterEncoding=utf-8
    "jdbc:mysql://localhost/xiao?user=root&password=1&useUnicode=true&characterEncoding=utf-8";
      

  4.   

    关键在于你用什么样的WEB容器。
    如果是Tomcat的话需要转码。用Resin就没这种问题。
    顺便说一句:70%的乱码解决方案都是为Tomcat准备的。
      

  5.   

    正是 Tomcat5.5 啊。 
    如果Mysql里有中文, 读出还是中文。
    只是通过JSP 网页输入中文,存入mysql5 就成乱码了。
      

  6.   

    tomcat默认不支持中文,如果要在JSP中显示中文,在JSP文件的第一行增加<%@ page language="java" pageEncoding="GB2312"%>代码来显示中文即可.
      

  7.   

    我也遇到过此问题,楼主试试
    1.有没有用过滤器?要用的!将输入/出数据都设为utf-8
    2.不要用JB做开发!开始我用JB(最新版没用过),怎么设置都是乱码.改成GBK就OK,后来换为Eclipse,一切正常!
      

  8.   

    还有建数据库时,要指定数据库编码为utf-8,然后楼上们说的:"在所有语句前加上:set names utf8""关键在于你用什么样的WEB容器。
    如果是Tomcat的话需要转码。用Resin就没这种问题。
    顺便说一句:70%的乱码解决方案都是为Tomcat准备的。"都不是问题!
    我就没有加:set names utf8
    我就用tomcat!Resin用过几天,偶尔持续占用CPU达50%左右,放弃了
      

  9.   

    是不是提交的表单的编码问题?听说提交时的编码好像是ISO8**。记不住了,编程真的可以让人记艺力下降!
      

  10.   

    提交时的编码可以设定为iso-8859-1
      

  11.   

    各位老大, 我加了
    <%@page language="java"   pageEncoding="UTF-8"  errorPage="error.jsp"%>response.setCharacterEncoding("utf-8");
    request.setCharacterEncoding("utf-8");Worker.java的doUpdate函数里加了
     Statement s = null;
     s = con.createStatement();
     
    s.executeUpdate("set names utf8");  s.executeUpdate(sql);/////
    现在偶尔存入mysql5的可以是中文了。在ItemName,偶尔存入1个中文字,或好几个相同的中文字都行,
    但存入2个不同的中文字 就不行了,报错
    com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'ItemName' at row 1
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2868)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3170)
    at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1316)
    at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1235)
    at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeUpdate(DelegatingStatement.java:228)
    at com.borrowsys.db.Worker.doUpdate(Worker.java:52)
    at com.borrowsys.db.Worker.updateItem(Worker.java:165)
    at org.apache.jsp.updateitem_jsp._jspService(updateitem_jsp.java:115)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393) 怎么办啊?是doUpdate函数里加的s.executeUpdate("set names utf8");  有错吗?
    都快绝望了!
      

  12.   

    极少时也能存入2个不同中文字,有时1个中文字也存不入。 反正就是极不稳定, 大多时候报错
    com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'ItemName' at row 1我现在是 Netbeans6+Tomcat6.0.13+Mysql5
      

  13.   

    你的ItemName字段是主键不?
    是的话那它的最大储存是不大于255
      

  14.   

    ItemName字段不是主键, 
    而且有时好几个相同的中文字都可以存入。
      

  15.   

    LZ用过滤器!(代码搜索多的是)
    jsp页面本身也用utf8编码!
      

  16.   

    总结一下楼上各位的。
    jsp我不懂,给点建议。我在php下也遇到过一次乱码,加上类似
    <%@page language="java"   pageEncoding="UTF-8"  errorPage="error.jsp"%>
    response.setCharacterEncoding("utf-8");
    request.setCharacterEncoding("utf-8");
    的代码之后消除。
    要确定是哪个坏节乱码。数据通过应用程序存入数据库,再从中取出交给应用程序的每一个环节进行检查。
    1. 网页自身文本以utf8存储
    2. 网页head标出utf8
    3. 就是上面的那段
    4. mysql以utf8存储。
    5. 以utf8从数据库读取
    6. 确保存入与取出相同的过程中编码相同,这样即使数据库中是乱码的,显示出来也会是正常的。
    7. 你用的接口对utf8支持不好。
      

  17.   

    存和取都乱码?
    入库前System.out.print一下看看...
    取出后,也print看看是否正常.楼上说得是,先确定哪个环节乱码了?
    是客户端到web容器?web容器到数据库?
      

  18.   

    主要是存乱码; 
    取还好,
    如果Mysql里有中文, 读出还是中文。
    只是通过JSP 网页输入中文,存入mysql5 就成乱码了。现在修改后也能存入mysql5是中文,不再乱码了, 但大多时报错 
    com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'ItemName' at row 1
      

  19.   

    兄弟们,我也遇到这种情况,我用的是
    数据库:MySql5.01
    Web容器:Tomcat5.5
    开发工具:MyEclipse5.5
    构架:Struts1.2+Hibernate3.1+XHTML
    --------------
    配置情况:
    (1).已加入过滤器com.util.SetCharacterEncodingFilter
    web.xml配置如下<!--中文编码过滤器-->
    <filter>
       <filter-name>Set Character Encoding</filter-name>
       <filter-class>com.util.SetCharacterEncodingFilter</filter-class>
       <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
      </init-param>
      <init-param>
    <param-name>ignore</param-name>
    <param-value>true</param-value>
      </init-param>
    </filter>
    <filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <servlet-name>action</servlet-name><!-- 过滤所有的action类 -->
    </filter-mapping>
    <filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <url-pattern>/*</url-pattern><!-- 过滤所有的jsp页面 -->
    </filter-mapping>
    (2).连接数据时已经设置了
    jdbc:mysql://127.0.0.1:3306/YDKT?useUnicode=true&amp;characterEncoding=UTF-8
    (3).jsp页面也设置了
    <?xml version="1.0" encoding="utf-8"?>
    <%@ page contentType="text/html; charset=utf-8" language="java"%>
    <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>
    信息
    </title>
    </head>
    (4).Struts控制器取表单数前也设置了
    response.setCharacterEncoding("utf-8");
    request.setCharacterEncoding("utf-8");####但问题出现了????????????????########
    新增数据时取到的中文一切正常,入库也正常,显示到页面上也正常,当点击修改时明明取到的中文不是乱码,Tomcat控制台打印出来的也是正常的中文也是正常的(如:name====你死我活
    修改hql====update SoundChatRight set nickname='你死我活' where id=:id),入库后却是乱码,显示到页面上的也是乱码,搞了两天还没有搞定.真是郁闷!!兄弟们,救救我吧.急呀.
      

  20.   

    回复人:yueliangdao0608((深圳PHPER,MSN:[email protected])) ( 一星(中级)) 信誉:98  2007-8-10 13:33:53  得分:0
    ?  在所有语句前加上:set names utf8
    连接成功后执行一次就行了
      

  21.   

    我是用hiberante操作数据的,能不能像如下操作??
    String hql="set names utf8;update SoundChatRight set nickname='你死我活' where id=:id ";
    tx = session.beginTransaction();
    Query query = session.createQuery(hql);
    query.setInteger("id",id);
    query.executeUpdate();
    session.close(); 
    还是要分开操作??
      

  22.   

    在运行sql语句前,先要运行
    mysql_query("SET NAMES 'utf8'",$link);
      

  23.   

    http://blog.chinaunix.net/u/29134/showart_390526.html
      

  24.   

    mysql_query("SET NAMES 'UTF8'");
    须重启mysql,否则无效的。
    =========================
    不知道行不行
      

  25.   

    .net2.0+Mysql需要在连接字符串也加上"character set=utf8"可以解决乱码问题,
    你在jsp里面试一下看看能否解决