程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Servlet向客戶端發送中文數據的編碼情況,servlet中文

Servlet向客戶端發送中文數據的編碼情況,servlet中文

編輯:JAVA綜合教程

Servlet向客戶端發送中文數據的編碼情況,servlet中文


(更多內容請關注本人微信訂閱號:it_pupil)

  拿到字符串,以特定形式編碼成字節數組(如UTF-8)。(字節數組是你人工轉換的)

 

   告訴浏覽器,以相同方式解碼顯示(UTF-8)。

 

如果你使用的是字符流,那麼需要注意三點:

 

   字符流其實就是你傳給它的是字符,它自己內部還是會轉換成字節的。

 

  拿到字符串,告訴服務端,發送時以特定方式編碼成字節數組(如UTF-8)。(字節數組是字符流內部轉換的)

 

  告訴浏覽器,以相同方式解碼顯示(UTF-8)。

 

就上面提出的幾點,有三種實現方案保證不亂碼(也是亂碼的解決思路):

 

方案一,字節流:

 

 

方案二,字符流:

 

 

方案三,還是字符流:

 


 

方案三其實可以像下面模擬一下編解碼的過程(toHex方法是把字節數組以16進制形式輸出):

 

 

所以,方案三的關鍵之處在於,一開始用UTF-8編碼,最後用UTF-8解碼,這是本質。

 

雖然ISO-8859-1是單字節編碼,但是,一開始用UTF-8編碼後,你用ISO-8859-1解碼,它會一個字節一個字節去解開,而UTF-8表示的漢字,一個漢字是三個字節,當然會亂碼。

 

但是亂碼不要緊啊,這個亂碼只是個中間過程,不需要顯示出來。緊接著用ISO-8859-1再編碼,那麼,編碼出的字節是跟UTF-8編碼的字節是相同的。

 

如此,最後再用UTF-8去解碼,完美!

 


 

本文是關於編碼分析的第5篇,原文地址:

http://mp.weixin.qq.com/s?__biz=MzIyNzUzNjQ3MA==&tempkey=37C%2F%2BA4Bi9W%2F7a0wo%2B56WiBFhphFwjbCfb6TgA3OcQ4v4JbKjTBmxOQLMoZldKoCJeAi%2BhxmRuBUwSzp7yjZCA2k5X%2BXxzpE3hD%2BaLWechfiCfr797hJOnJt29Rqr9eM5KF3ZKZOmQ%2FeJGYzG8vXRQ%3D%3D&#rd

 更多內容請關注相關訂閱號查看。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved