怎樣解決Java/J2EE中文問題

來源:互聯網
上載者:User

標籤:解決方案   應用程式   瀏覽器   程式員   資料庫   

大部分程式員在編程中都遇到過Java中文問題,但是只要你知道了Java系統的中文問題原理,我們就可以對中文問題說拜拜。

 

  最古老的解決方案是使用String的位元組碼轉換,這種方案問題是不方便,我們需要破壞對象封裝性,進行位元組碼轉換。

 

  還有一種方式是對J2EE容器進行編碼設定,如果J2EE應用系統脫離該容器,則會發生亂碼,而且指定容器配置不符合J2EE應用和容器分離的原則。

 

  在Java內部運算中,涉及到的所有字串都會被轉化為UTF-8編碼來進行運算。那麼,在被Java轉化之前,字串是什麼樣的字元集? Java總是根據作業系統的預設編碼字元集來決定字串的初始編碼,而且Java系統的輸入和輸出的都是採取作業系統的預設編碼。

 

  因此,如果能統一Java系統的輸入、輸出和作業系統3者的編碼字元集合,將能夠使Java系統正確處理和顯示漢字。這是處理Java系統漢字的一個原則,但是在實際項目中,能夠正確抓住和控制住Java系統的輸入和輸出部分是比較難的。J2EE中,由於涉及到外部瀏覽器和資料庫等,所以中文問題亂碼顯得非常突出。

 

  J2EE應用程式是運行在J2EE容器中。在這個系統中,輸入途徑有很多種:一種是通過頁面表單打包成請求(request)發往伺服器的;第二種是通過資料庫讀入;還有第3種輸入比較複雜,JSP在第一次運行時總是被編譯成Servlet,JSP中常常包含中文字元,那麼編譯使用javac時,Java將根據預設的作業系統編碼作為初始編碼。除非特別指定,如在Jbuilder/eclipse中可以指定預設的字元集。

 

  輸出途徑也有幾種:第一種是JSP頁面的輸出。由於JSP頁面已經被編譯成Servlet,那麼在輸出時,也將根據作業系統的預設編碼來選擇輸出編碼,除非指定輸出編碼方式;還有輸出途徑是資料庫,將字串輸出到資料庫。

 

  由此看來,一個J2EE系統的輸入輸出是非常複雜,而且是動態變化的,而Java是跨平台啟動並執行,在實際編譯和運行中,都可能涉及到不同的作業系統,如果任由Java自由根據作業系統來決定輸入輸出的編碼字元集,這將不可控制地出現亂碼。

 

  Java是一門跨平台性的語言,使得字元集問題必須由具體系統來統一解決,所以在一個Java應用系統中,解決中文亂碼的根本辦法是明確指定整個應用系統統一字元集。


怎樣解決Java/J2EE中文問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.