我們在開發(fā)JAVA程序的時(shí)候經(jīng)常遇到亂碼的現(xiàn)象,可能新手對這些不沒有經(jīng)驗(yàn),不是很了解它的出現(xiàn)是由于什么問題引起的,今天整理了幾個(gè)常用JAVA亂碼的處理方法,供大家參考一下,新疆軟件開發(fā)網(wǎng)搜集整理 。
1. Serlvet傳遞過來的參數(shù)的編碼不對:
解決方案:
a) 檢查Tomcat的conf/Server.xml的Connector Tag <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='UTF-8' />
b) 檢查 doGet() 函數(shù) request.setCharacterEncoding("UTF-8");
2. Hibernate遇到亂碼問題:
檢查:hibernate.cfg.xml中的 <property name="connection.url"> jdbc:mysql://localhost:3306/yidishui?useUnicode=true&characterEncoding=UTF-8 </property>
3. PreparedStatement, setString之后trace(prepStm)發(fā)現(xiàn)SQL變成亂碼了
解決方法: 1) 在setString的地方試著把自己的string的charset改成數(shù)據(jù)庫一樣的charset, (我試了很久,沒試出來,但應(yīng)該是可行的) 2) 在創(chuàng)建Connection的時(shí)候,用上面解決方法中的帶有characterEncoding的url
4. 使用 newStr = new String( oldStr.getBytes("XXXXX"), "YYYY" ) 從XXXX將字符轉(zhuǎn)化成YYYY
|