麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Java多語(yǔ)言編碼問(wèn)題解析(1)

2019-11-18 13:14:24
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 美女黄网站免费观看 | 一级成人黄色片 | 亚洲一区在线免费视频 | 日本在线观看高清完整版 | china对白普通话xxxx | 亚洲乱妇19p | 成人黄色小视频网站 | 久久久www成人免费精品 | 久久精品视频黄色 | 亚洲第一综合 | 一本视频在线观看 | 亚洲国产精品99 | 一区二区三区日韩电影 | 久久综合av | 国产亚洲精品久久久久婷婷瑜伽 | 精品中文字幕久久久久四十五十骆 | 欧美精品久久久久久久久久 | 成人在线国产 | av一道本| 青青国产在线视频 | 中文字幕涩涩久久乱小说 | 黑人一区二区 | 久久精品一级片 | 欧美一级毛片特黄黄 | 成人综合区一区 | h视频免费在线 | www成人在线观看 | 成年免费看 | 中文日韩字幕 | 毛片一区二区三区四区 | 27xxoo无遮挡动态视频 | 成人羞羞在线观看网站 | 国产成人在线一区二区 | 黄色片在线免费播放 | 欧美一区二区三区免费不卡 | 国产91一区| 四季久久免费一区二区三区四区 | 亚洲人成免费 | 久久久精品视 | www.91tv| 夜夜看|