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)