天天看點

Java同樣的漢字在伺服器和本地的電腦上URLencode 出來的結果不一緻

Java同樣的漢字在伺服器和本地的電腦上URLencode 出來的結果不一緻

在CSDN問答中看到這個問題,通常這類問題都是由于字元串的編碼導緻的。

代碼如下:

輸出:

%E4%B8%AD%E6%96%87%E5%AD%97%E7%AC%A6

%E6%B6%93%EF%BF%BD%EF%BF%BD%EF%BF%BD%E7%80%9B%EF%BF%BD%E7%BB%97%EF%BF%BD

UTF-8的才是正确的。

URLEncoder.encode(String s) 過時了,使用下面的方法:

%D6%D0%CE%C4%D7%D6%B7%FB

檢視預設編碼:

問題又來了,兩次輸出的 GB2312 編碼的不一樣!一次那麼長,一次卻很短!

檢視的實作源碼吧!

通過檢視源碼我們可以明白,傳入的第二個參數是輸出的編碼,而不是指将傳入的第一個參數轉換為什麼類型的編碼;

預設它應該是讀取的容器(如:Tomcat)的預設編碼;

我們可以通過執行以下代碼檢視:

需要在項目中添加一個類:GetPropertyAction.java

是以正确的姿勢是先判斷你的預設編碼是不是“UTF-8”,使用:Charset.defaultCharset();

如果不是,就将其轉換為“UTF-8”,使用:String newStr = new String(oldStr.getBytes(), "utf-8");

然後再編碼:URLEncoder.encode(newStr, "utf-8");

======================文檔資訊===========================

版權聲明:非商用自由轉載-保持署名-注明出處

署名(BY) :testcs_dn(微wx笑)

文章出處:[無知人生,記錄點滴](http://blog.csdn.net/testcs_dn)