国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java多語言編碼問題解析(1)

2019-11-18 13:14:24
字體:
來源:轉載
供稿:網友

  1、java編譯器在對源文件編譯前,會先把源文件轉換為unicode編碼,因為這個原因,我們在編譯時一定要把源文件用的是什么編碼方式正確無誤的”告訴”編譯器。
  
  例如:我們的源文件是以UTF-8的方式保存的,而在編譯時編譯器卻把它當作是用GBK方式保存的,這樣編譯器就會按照GBK->Unicode的編碼轉換方法對源文件進行轉換,然后再編譯,這樣當然會出錯,實際上編譯器應當按照UTF-8->Unicode的編碼轉換方法來對源文件進行轉換。
  
  a.對于控制臺程序,編譯器會把源文件看作是由系統默認的編碼類型來編碼的(系統默認的編碼類型取決于在控制面板區域設置里的配置,中文win2k下通常是GBK),也可以使用-encoding參數來設置,如:javac -encoding UTF-8,這樣編譯器就會把源文件看作是用UTF-8編碼的(這只是告訴編譯器源文件的編碼類型,而不是對源文件轉碼)。在各種語言的平臺上只要在編譯用時-encoding指定與源文件的編碼相同的編碼方式,就不會存在國際化的問題了。
  
  b.對于jsp,編譯器則會根據設定的字符集來判定JSP文件使用的是什么編碼方式,進而將其轉換成unicode后進行編譯;若JSP中未指定,編譯器則會把JSP文件看作是按照系統默認的編碼來保存的。在JSP2.0里新增了一個指令來通知編譯器這個源文件所使用的編碼方式。
  
  2、在處理輸入輸出時,注重設置輸入流和輸出流的編碼類型與用戶輸入時和輸出設備顯示時采用的編碼方式一致。
  
  由于JRE在處理輸入輸出時會將輸入或輸出的內容進行編碼轉換,對于輸入會轉換為unicode后再送入,因此要正確的匹配實際輸入內容的編碼方式和告知JRE的編碼方式,對于輸出,會由unicode轉換為其他的編碼再送出程序,因此要正確匹配輸出設備顯示時用的編碼方式和告知JRE的編碼方式。
  
  例如:程序中設置輸入流的編碼是new InputStreamReader(System.in,"GB2312");而程序運行后用戶輸入時用了繁體中文的輸入法,輸入了BIG5編碼的內容,這樣JRE把BIG5編碼的內容當作GB2312的進行了GB2312->unicode的編碼轉換,這樣轉換后的結果顯然不是用戶想要輸入的內容了。
  
  默認情況下,JRE會把輸入輸出的內容當作是按照系統默認編碼方式編碼的。
  
  3、在Servlet中,除了一定要把源文件用的是什么編碼方式正確無誤的”告訴”編譯器外,還要注重實際提交的URL數據、表單數據的編碼格式和request中聲明的編碼格式一致。
  
  客戶端瀏覽器在通過表單和URL提交數據時,容器和JVM會將request中的數據看作是按照request所聲明的編碼方式來編碼的,將數據由這種編碼方式轉換為unicode后再送入servlet(實際上容器會先將request中的數據轉為一種中間編碼方式,具體根據容器的配置而定,再由JVM由這種中間方式轉換為unicode,通常這種中間格式是ISO)。servlet輸出的unicode數據會由容器根據response中聲明的編碼方式進行轉換,再送到客戶端瀏覽器上。
  
  在接收客戶端輸入時,用request.setCharacterEncoding()聲明請求中數據的編碼方式。
  
  在向客戶端輸出時用response.setContentType("text/Html;charset=");聲明響應的數據的編碼方式,告知瀏覽器以哪種編碼方式顯示。
  
  4、在JSP中,由于JSP本就會被JSP編譯器編譯為servlet來運行,因此情況與servlet相同。
  
  這兩個JSP指令聲明了請求和響應的編碼方式。
  
  只要確保URL參數或表單中數據的編碼方式和所聲明的編碼方式一致,再通過告知JSP編譯器本JSP文件采用的編碼方式及含有哪種字符,即可解決JSP的字符編碼問題。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南和县| 武宣县| 东兴市| 高青县| 革吉县| 萨嘎县| 彩票| 宁陵县| 永登县| 京山县| 衡山县| 新乡市| 太康县| 巨野县| 吉林市| 大埔区| 苏尼特右旗| 黄浦区| 遂川县| 伽师县| 肇源县| 澜沧| 罗源县| 遵义县| 廊坊市| 定襄县| 伊金霍洛旗| 琼海市| 化州市| 安岳县| 客服| 汉阴县| 淮阳县| 九龙城区| 钟祥市| 洛扎县| 故城县| 子长县| 新竹市| 九寨沟县| 大英县|