《关于mysql乱码问题的解决方法》--作者:nowind http://javawebstudio.com/bbs/dispbbs.asp?boardID=8&ID=251&page=1

解决方案 »

  1.   

    我在Mysql中建表时,CHARSET使用的是latin1,改为gb2312问题还是一样。
      

  2.   

    可以在连接池配置的时候做一下,主要是转码的问题,
    也可以在程序里面做.
    网上有资料的,用'转码'作为关键字查询一下看看,应该可以查到.
    我的主页http://51home.ku.net
      

  3.   

    实在没办法就在进行数据操作的时候,把SQL语句转一下,
      

  4.   

    JSP 添加 <%request.setCharacterEncoding("gb2312");//解决jsp数据操作的中文问题%> Servlet: public void doGet(HttpServletRequest req, HttpServletResponse resp)..
              {  ....
                   req.setCharacterEncoding("GB2312");}
      

  5.   

    该系统已开发完成,如果使用别的方式可能要做较多的代码修改,而使用Filter可减少很多开发工作,而且也方便,所以仍希望用Filter解决中文乱码问题。
      

  6.   

    <filter-mapping>
        <filter-name>SetCharacterEncodingFilter</filter-name>
        <url-pattern>*.jsp</url-pattern>
      </filter-mapping>
      <filter-mapping>
        <filter-name>SetCharacterEncodingFilter</filter-name>
        <url-pattern>*.html</url-pattern>
      </filter-mapping>
      <filter-mapping>
        <filter-name>SetCharacterEncodingFilter</filter-name>
        <url-pattern>*.htm</url-pattern>
      </filter-mapping>
      <filter-mapping>
        <filter-name>SetCharacterEncodingFilter</filter-name>
        <url-pattern>*.do</url-pattern>
      </filter-mapping>
    web.xml里边把这些也加上
      

  7.   

    在$tomcat$下的server.xml找到以下这一段,URIEncoding="GBK"你的server.xml中哟!<Connector port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"               enableLookups="false" redirectPort="8443" acceptCount="100"               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK" />
    记得吧web.xml的filter去掉,页面也适用GBK就好了(或者同时使用gb2312)
      

  8.   

    在$tomcat$下的server.xml找到以下这一段,把URIEncoding="GBK"加入你的server.xml中哟!<Connector port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443" acceptCount="100"connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK" />
    记得吧web.xml的filter去掉,页面也适用GBK就好了(或者同时使用gb2312)
      

  9.   

    我用楼上的方法做了之后,原来的一个汉字显示为一个"?"的情况变为显示为二个"?"的,问题未能解决。如果在web.xml中把filter去掉,那SetCharacterEncodingFilter类应该在哪里初始化呢?
      

  10.   

    使用phpMyAdmin查看数据库记录是,内容是中文,怎么就是取出后就成了乱码了呢?
      

  11.   

    中文解决方法一、Tomcat本身的Get与Post中文处理方法
    http://www.javaworld.com.tw/jute/post/view?bid=9&id=44042&sty=1&tpg=1&age=01、从webapps\jsp-examples\WEB-INF\classes\下拷贝filters目录到YourAPP的classes目录下
    2、设置Tomcat的Server.xml配置文件在<Connector中增加URIEncoding="GBK"成如下
        <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" redirectPort="8443" acceptCount="100"
                   debug="0" connectionTimeout="20000" 
                   disableUploadTimeout="true"
                   URIEncoding="GBK"/>
    3、在应用程序的配置文件web.xml中<web-app>增加
        <filter>
            <filter-name>Set Character Encoding</filter-name>
            <filter-class>filters.SetCharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>GBK</param-value>
            </init-param>
        </filter>
        
        <filter-mapping>
            <filter-name>Set Character Encoding</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>二、代码修改
    1、JSP文件的修改
    在首句加上:
    <%@ page contentType="text/html;charset=GBK"%>
    以显示中文2、new String((request.getParameter("caseData")).getBytes("ISO-8859-1"),"GBK");JDBC源:
    jdbc:mysql://localhost/Test?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=GB2312
      

  12.   

    中文解决方法一、Tomcat本身的Get与Post中文处理方法
    http://www.javaworld.com.tw/jute/post/view?bid=9&id=44042&sty=1&tpg=1&age=01、从webapps\jsp-examples\WEB-INF\classes\下拷贝filters目录到YourAPP的classes目录下
    2、设置Tomcat的Server.xml配置文件在<Connector中增加URIEncoding="GBK"成如下
        <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" redirectPort="8443" acceptCount="100"
                   debug="0" connectionTimeout="20000" 
                   disableUploadTimeout="true"
                   URIEncoding="GBK"/>
    3、在应用程序的配置文件web.xml中<web-app>增加
        <filter>
            <filter-name>Set Character Encoding</filter-name>
            <filter-class>filters.SetCharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>GBK</param-value>
            </init-param>
        </filter>
        
        <filter-mapping>
            <filter-name>Set Character Encoding</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>二、代码修改
    1、JSP文件的修改
    在首句加上:
    <%@ page contentType="text/html;charset=GBK"%>
    以显示中文2、new String((request.getParameter("caseData")).getBytes("ISO-8859-1"),"GBK");JDBC源:
    jdbc:mysql://localhost/Test?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=GB2312
      

  13.   

    我原来也遇见过这个问题,也没有找到解决办法,
    请问 YuLimin,jsp里new String((request.getParameter("caseData")).getBytes("ISO-8859-1"),"GBK")为什么总是转成iso8859?
      

  14.   

    如果filter把request过滤成GB2312,那么所有的JSP文件的编码要是GB2312(在Eclipse里用文本编辑器打开,学编辑菜单中的编码,改成GB2312),并且JSP文件里要加上<%@ page contentType="text/html;charset=GB18030"%>
      

  15.   

    哦,错了,是<%@ page contentType="text/html;charset=GB2312"%>
      

  16.   

    如果楼主除了struts,同时也使用了spring,那就有一种较好的解决字符编码的方法,同时这种方法也结合了程序的国际化支持。
    在jsp中,页面使用UTF-8的编码,页头应该是这样的
    <%@ page language="java" contentType="text/html;charset=UTF-8"%>
    而页面中需要输出文字的位置,不管输出的是哪种语言,都用struts的<bean:message>标记来输出信息。如:
    <bean:message key="AddDeptAndUserForm.title"/>
    这个key就是struts的资源文件中配置的标签/值对的标签名。
    struts的资源文件ApplicationResources.properties中的内容类似于:
    AddDeptAndUserForm.title=Add Dept and User page
    如果我们需要中文,那就复制一份这个文件,然后把其中的英文值改为中文的,再用java的native2ascii命令,把这个文件编码成一个中文资源文件ApplicationResources_zh.properties
    编码后内容如:AddDeptAndUserForm.title=\u5f55\u5165\u90e8\u95e8\u548c\u7528\u6237\u4fe1\u606f\u754c\u9762这样处理后,struts就会自动根据用户的浏览器语言从我们提供的资源文件中选择不同的内容来输出,完成国际化的处理。最后一步,在web.xml加载一个spring提供的编码过滤器,如:
    <filter> 
    <filter-name>Set Character Encoding</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> 
    </filter> 现在,我们的程序不仅能根据浏览器语言显示不同语种的界面,而且也不用担心乱码问题,在action中不必再使用老式的new String((request.getParameter("caseData")).getBytes("ISO-8859-1"),"GBK");来进行繁琐的编码转换了。这样开发出来的程序易于修改,并且当用户要求修改页面上显示的一些专业词汇时,我们不用去寻找对应的jsp文件进行修改,只要统一的修改资源文件即可,避免对程序做出大的修改了。