日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tomcat+SSH中遇到中文乱码的解决方法

發布時間:2025/5/22 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tomcat+SSH中遇到中文乱码的解决方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近開始又轉向J2EE的開發。很久沒用,重新熟悉。

本地環境ubuntu 12.13,mysql5.x,tomcat7.x,struts2.3.15.x,spring3.1.0,hibernate4.1.x

之前一直連線上服務器上測試數據庫,沒有發現有中文亂碼問題。

現在在本地搭建此環境,使用本地數據庫,便于調試,但是發現每次對數據庫操作,有中文就會出現????亂碼。

那現在一步步排除什么原因引起:

  • 前端jsp或者html界面:

  • 對于在頁面中顯示出現亂碼,這個問題比較簡單,便是檢查你的JSP文件里是不是出現了中文要處理,因為JSP默認的編碼格式為“ISO-8859-1”,當JSP中出現要處理的中文時,其顯示就出現亂碼了,這種情況一般出現在手寫JSP,或修改時。

    <%@?page?language="java"?contentType="text/html;?charset=utf-8"pageEncoding="UTF-8"%>

    2、傳參數過程中亂碼

    傳遞參數出現的亂碼,參數的內容為中文。無論是post或者get。

    需要關注的位置:

    • ?tomcat 配置,位置 tomcat->conf->server.xml,加入URIEncoding="utf-8"

    <Connector?port="8080"?protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"?URIEncoding="utf-8"/>
    • web.xml中加入過濾器filter

    <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></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

    上面項目中用的spring帶的web字符過濾器

    • tomcat 配置,位置 tomcat->conf->web.xml ? ? 放開注釋的過濾器

    <!--?A?filter?that?sets?character?encoding?that?is?used?to?decode?--><!--?parameters?in?a?POST?request?--><filter><filter-name>setCharacterEncodingFilter</filter-name><filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><async-supported>true</async-supported></filter>
    • 編寫過濾器Filter (這個沒用到)

    3、后臺部分

    主要是關注:hibernate和mysql(我項目用的mysql數據庫)

    • ?hibernate注意:

    連接mysql,如果用hibernate.cfg.xml加上屬性.

    <property name="connection.useUnicode">true</property>?

    <property name="connection.characterEncoding">UTF-8</property>?

    如果用spring配置文件:

    有兩種方法,1、直接寫到applicationContext.xml中;2、寫到database-config.properties中,由applicationContext.xml調用

    database-config.properties:

    mydata.driverClass=com.mysql.jdbc.Driver #mydata.url=jdbc:mysql://localhost:3306/sdk?useUnicode=true&characterEncoding=UTF-8 mydata.url=jdbc:mysql://localhost:3306/sdk?useUnicode=true&characterEncoding=UTF-8 mydata.username=root wshouyouDB.password=xxxx

    (我遇到的問題是出現上段代碼中)

    applicationContext.xml:

    <!--?讀取jdbc.properties配置文件?--><beanclass="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property?name="locations"><value>classpath:database-config.properties</value></property></bean><bean?id="dataSource"?destroy-method="close"class="com.mchange.v2.c3p0.ComboPooledDataSource"><property?name="driverClass"?value="${mydata.driverClass}"?/><property?name="jdbcUrl"?value="${mydata.url}"?/><property?name="user"?value="${mydata.username}"?/><property?name="password"?value="${mydata.password}"?/>
    • mysql部分

    創建數據庫表中,注意:

    show create table gamepad_model;看一下創建表的語句

    CREATE?TABLE?`gamepad_model`?(`edit_id`?varchar(50)?NOT?NULL,`filedata`?text,`gamepad_type`?varchar(100)?NOT?NULL,`pic_url`?varchar(255)?DEFAULT?NULL,`sdk_version`?varchar(50)?NOT?NULL,`update_date`?timestamp?NOT?NULL?DEFAULT?CURRENT_TIMESTAMP?ON?UPDATE?CURRENT_TIMESTAMP,PRIMARY?KEY?(`edit_id`) )?ENGINE=InnoDB?DEFAULT?CHARSET=utf8

    需要加上: CHARSET=utf8

    排除是不是mysql的問題,可以手動插入一條含有中文的數據,看看表中是否有亂碼;

    ?

    insert?into?gamepad_model(edit_id,filedata,gamepad_type,sdk_version)?values('test3_測試','ttt','testtt_你好','1');

    如果沒有問題,則排除mysql問題

    一步一步排除

    1、前臺,是否有亂碼,不是,傳遞參數層

    2、傳遞參數,到java中,看到傳遞過來的中文,debug下是否有中文亂碼,如果沒有,排除之

    3、前兩步排除后,就應該是后臺問題,hibernate或者mysql問題,

    4、可以先看上邊提到的,手動插入一句有中文內容的語句,看數據庫中是否有亂碼,如果沒有,排除之

    5、到這一步,就只剩下hibernate問題了。在上文中,提到注意的地方,檢查。

    我的問題就在這一步,

    mydata.url=jdbc:mysql://localhost:3306/sdk?useUnicode=true&characterEncoding=UTF-8

    一般不在xml中,連接數據庫需要加上

    useUnicode=true&characterEncoding=UTF-8

    但是如果在xml中,需要轉意一下

    mydata.url=jdbc:mysql://localhost:3306/sdk?useUnicode=true &amp; characterEncoding=UTF-8

    其他方面沒有研究,有的話,請多指教!

    • 相關文章推薦:

    • Tomcat在Linux上使用Native Library

    • apache+3tomcat+jk+memcached集群環境搭建

    • Linux(ubuntu12.04)下搭建Nginx+Tomcat

    • 本文來自:愛好Linux技術網

    • 本文鏈接:http://www.ahlinux.com/tomcat/9253.html



    轉載于:https://blog.51cto.com/9626185/1579052

    總結

    以上是生活随笔為你收集整理的tomcat+SSH中遇到中文乱码的解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。