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機制.