文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>linux,mysql,tomcat 组合的乱码问题解决办法

linux,mysql,tomcat 组合的乱码问题解决办法

时间:2007-05-16  来源:Chen@Heng

     我想很多朋友在linux下,用tomcat,mysql时都可能会出现这个乱码问题吧,很显然我也没有逃过此劫,不过现在解决了,心情是非常好的.
     我是用myEclipes开发布暑web的,很显然这是一个相当好用的工具,她可以为你做很多事,包括现在我还搞不清楚的一些细节.我对此不怎么了解,就不在此写关于她的东西了.
      我的所有的web页面都用的是utf8编码,数据库我也用的是utf8,但在我的机器上这一切并不象我想象中的那么顺利就实现了,打开页面时,从数据库读出来的还是乱码.后来我用的tomcat里filters过滤器,才总算暂时没有在页面中没有了乱码,但是在mysql中用客户端工具查询时是乱码,这些原因我不清楚,或许以后能搞明白一部分的.下面我把我的一些具体做法描述如下:

   1.      mysqld配制件:   shell#vi /etc/my.cnf                                                         [mysqld]
      port            = 3306
      socket          = /tmp/mysql.sock
      skip-locking
      key_buffer = 16M
      max_allowed_packet = 1M
      table_cache = 64
      sort_buffer_size = 512K
      net_buffer_length = 8K
      read_buffer_size = 256K
      read_rnd_buffer_size = 512K
      myisam_sort_buffer_size = 8M
      #add by chenheng
      default-character-set=utf8              #加上这一句
   2. jstl直接连接到mysql:
       <sql:setDataSource driver="com.mysql.jdbc.Driver" user="mysql" password="mysql" url="jdbc:mysql://localhost:3306/netServer?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
   3. web页面:                     <%@ page contentType="text/html" pageEncoding="UTF-8" %>
   4. 在你的web项目下的WEB-INF/lib/class/下面放filters过滤器,这一点你可以直接将tomcat下servlets-example下的filters拷过来直接用
   5. web.xml配制文件如下:                                                                                                       <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
        <servlet>
          <servlet-name>XFireServlet</servlet-name>
          <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
          <load-on-startup>0</load-on-startup>
        </servlet>
        <servlet-mapping>
          <servlet-name>XFireServlet</servlet-name>
          <url-pattern>/services/*</url-pattern>
        </servlet-mapping>
        
        <filter>
          <filter-name>SetCharacterEncoding</filter-name>
          <filter-class>filters.SetCharacterEncodingFilter</filter-class>
          <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
          </init-param>
        </filter>
        <filter-mapping>
          <filter-name>SetCharacterEncoding</filter-name>
          <url-pattern>/*</url-pattern>
        </filter-mapping> 
</web-app>                                                                                                                                                                  

      在我的系统上做了这些工作后才总算有了个了段,但负面效果也是存在的(前面已经提到),我将继续关注这个问题,以求弄明白其所以然.
      tomcat中乱码出现,post,get用不同的编码处理请求,在上述方法以后,还可能不能解决get引起的乱码,这时可以修改conf/server.xml文件:如下
 
    <Connector port="8080"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true" URLEncoding="utf-8" />
     加上红色部分.我个人认为由上可以解决新录入的数据不是乱码,对于以前的数据,可能还得转码导出后才不会是乱码.在此我就不写了,因为我目前还没遇到这样的问题.

 
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载