1. 程式人生 > >關於java.net.URLEncoder.encode編碼問題

關於java.net.URLEncoder.encode編碼問題

瀏覽器中 屬性 def new 處理 form 可能 nbsp 轉換成

Q:java.net.URLEncoder.encode裏的編碼和什麽有關的?

A:使用urlencoder編碼會將中文變成你在瀏覽器地址欄看到的%XX形式,至於選擇哪種enc編碼跟你jvm的default charset有關,因為java項目一般用的都是UTF-8編碼,為了防止你的中文以其他編碼方式打開的時候亂碼(如果這個時候亂碼了,你在編碼解碼也是亂碼),推薦整個項目使用同一編碼解碼,如果你的項目用的是GBK的,那麽java.net.URLEncoder.encode("中文.zip","GBK")也是完全沒問題的,但如果你用其他編碼比如iso8859-1就會解出來亂碼了

Q:至於選擇哪種enc跟你jvm的default charset有關 默認是UTF-8? 和tomcat目錄下的conf目錄下的設置端口號那個標簽裏的URIEncoding="UTF-8"這個屬性有關麽?

A:有的,如果你用的是tomcat的話,因為你網絡傳輸需要經過tomcat處理的,tomcat會將你的網絡流編碼轉換成配置中的編碼,如果兩邊不對應的話,有可能會出現亂碼,但如果編碼站位較長轉為短碼也不會亂碼

Q:為什麽我將URIEncoding改成GBK也沒見它亂碼呢?

A:那要看你的項目編碼設置咯,你的項目是GBK的話,tomcat的傳輸編碼會以你運行project為準,你可以改成iso的試試的嘛

在Web的瀏覽器中,不同的瀏覽器的編碼和解碼規則是不一樣的.

對於W3C瀏覽器:遵循W3C組織規範的瀏覽器,(非IE).

編碼:byte[] data = “任小龍”.getByte(String charsetName);

解碼:String str = new String(data, String charsetName);

對於IE瀏覽器:

編碼使用的application/x-www-form-urlencodedMIME機制.

關於java.net.URLEncoder.encode編碼問題