request.getParameter(“參數名”) 中文亂碼解決方法


 

盡量用post提交,不要用問號拼接參數的方式,就不會亂碼了

 

原文:http://blog.csdn.net/wzygis/article/details/50964864

 

Java 開發中,如果框架搭建的不完善或者初學者在學習過程中,出現中文亂碼是經常的事兒(哈。誰讓發明Java語言的不是中國人呢)

今天跟大家分享幾個解決java Web開發中,request.getParameter()獲取URL中文參數亂碼的解決辦法

解決問題,先要研究問題,URL傳中文參數為什么會出現亂碼?

原因:Http請求傳輸時將url以ISO-8859-1編碼,服務器收到字節流后默認會以ISO-8859-1編碼來解碼成字符流(造成中文亂碼)

解決辦法:我們需要把request.getParameter(“參數名”)獲取到的字符串先用ISO-8859-1編碼成字節流,然后再將其用utf-8解碼成字符流

代碼:

 

String str = new String(request.getParameter("參數名").getBytes("iso-8859-1"), "utf-8");  

這是通過轉碼的方式處理亂碼問題,我們也可以通過Tomcat配置文件,設置URL編碼集(URIEncoding)設置編碼,這種方法也是一勞永逸的,

修改Tomcat/conf 目錄下 server.xml

<Connector URIEncoding="UTF-8" acceptCount="1500" connectionTimeout="20000" enableLookups="false" maxSpareThreads="100" maxThreads="1000" minSpareThreads="25" port="9082" protocol="HTTP/1.1" useBodyEncodingForURI="true"/>

 

重點在 userBodyEncodingForURI 和 URIEncoding 這兩個屬性

下面來解釋一下這兩個屬性的意義

useBodyEncodingForURI參數表示是否用request.setCharacterEncoding參數對URL提交的數據和表單中GET方式提交的數據進行重新編碼,在默認情況下,該參數為false。

URIEncoding參數指定對所有GET方式請求進行統一的重新編碼(解碼)的編碼。

URIEncoding和useBodyEncodingForURI區別是,

URIEncoding是對所有GET方式的請求的數據進行統一的重新編碼,

而useBodyEncodingForURI則是根據響應該請求的頁面的request.setCharacterEncoding參數對數據進行的重新編碼,不同的頁面可以有不同的重新編碼的編碼。

 

 

 

原文:http://blog.csdn.net/lixuanshengchao/article/details/51521005

今天做一個項目遇到一個問題,在myeclipse里面調試的時候,里面的數據不是亂碼,但是插入到MySQL數據庫后就是亂碼了。mysql的my.ini文件設置的是utf8,這些都沒得問題,但是插入數據庫還是亂碼。

最后還是找到了解決辦法。在連接數據庫類里面的url參數設置如下:

jdbc:mysql://localhost:3306/zhuojh?useUnicode=true&characterEncoding=UTF-8

在后面加上這兩個參數。就不是亂碼了。

 driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/enterprise?useUnicode=true&characterEncoding=UTF-8
username=root
password=brozer
initialSize=5
maxIdle=10
maxTotal=50
maxWaitMillis=5000
minIdle=5

 

頁面加上編碼設置

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

 

原文:http://blog.csdn.net/cc_yy_zh/article/details/51559742

客戶端向服務器端發送信息,如果發送的編碼和服務器端接收的編碼不一樣,使用request.getParameter()方法獲取的表單信息會產生亂碼。客戶端接收服務器的響應信息,如果響應編碼與客戶瀏覽器的編碼不一致時,會造成中文亂碼顯示。 
為了解決中文正常顯示,可以采取以下方案。 
(1)post方式提交表單 
a>設置頁面的編碼 
在jsp或HTML頁面中,有時會涉及編碼的定義,可使用統一編碼,例如GBK或UTF-8. 
b>設置表單提交方式在頁面中,將 
標記的method屬性值設置為post,該屬性默認為get,get方式會將表單信息采取特殊編碼,然后借助於URL發送給服務器。 
c>設置服務器接收編碼 
在使用request.getParameter()方式接收客戶表單信息之前,設置接收編碼,編碼與頁面保持一致。request.setCharacterEncoding(“UTF-8”); 
使用setCharacterEncoding()方法指定編碼后,可以通過getParameter()方法按指定編碼獲得客戶信息,如果不指定,則默認使用ISO-8859-1編碼。

下面比較強硬了 
String str = new String(request.getParameter(“參數名”).getBytes(“iso-8859-1”), “utf-8”);

 

 

原文:http://www.cnblogs.com/tom-plus/p/5701741.html

web項目存數據到數據庫,中文亂碼,解決過程

first:

排查原因:

打斷點,查看到底是在執行存數據庫操作之前就已經亂碼了,還是存數據庫操作后亂碼的。

前者解決方案:

在web.xml里面加上:

 

<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<async-supported>true</async-supported>
<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>
在配置jdbc數據源的時候加上:
jdbc:mysql://127.0.0.1:3306/logistics?useUnicode=true&amp;characterEncoding=UTF-8
存數據庫操作后亂碼,解決方案:
登錄數據庫,執行如下sql:

show variables like 'character%';

結果:

| character_set_client     | utf8                                                   |

| character_set_connection | utf8                                                   |

| character_set_database   | latin1                                                 |

| character_set_filesystem | binary                                                 |

| character_set_results    | utf8                                                   |

| character_set_server     | latin1                                                 |

| character_set_system     | utf8                                                   |

 

說明在安裝數據庫的時候,character_set_database,character_set_server編碼格式設置錯誤。

解決:

找到mysql安裝路徑下的my.cnf文件在[mysqld]下添加如下兩行:

character_set_server=utf8 
init_connect='SET NAMES utf8'

再次查看,問題解決:

| 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        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM