新聞中心
大部分程序員在編程中都遇到過(guò)Java中文問(wèn)題,但是只要你知道了Java系統(tǒng)的中文問(wèn)題原理,我們就可以對(duì)中文問(wèn)題說(shuō)拜拜。

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、湘潭網(wǎng)絡(luò)推廣、成都微信小程序、湘潭網(wǎng)絡(luò)營(yíng)銷、湘潭企業(yè)策劃、湘潭品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供湘潭建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
最古老的解決方案是使用String的字節(jié)碼轉(zhuǎn)換,這種方案問(wèn)題是不方便,我們需要破壞對(duì)象封裝性,進(jìn)行字節(jié)碼轉(zhuǎn)換。
還有一種方式是對(duì)J2EE容器進(jìn)行編碼設(shè)置,如果J2EE應(yīng)用系統(tǒng)脫離該容器,則會(huì)發(fā)生亂碼,而且指定容器配置不符合J2EE應(yīng)用和容器分離的原則。
在Java內(nèi)部運(yùn)算中,涉及到的所有字符串都會(huì)被轉(zhuǎn)化為UTF-8編碼來(lái)進(jìn)行運(yùn)算。那么,在被Java轉(zhuǎn)化之前,字符串是什么樣的字符集? Java總是根據(jù)操作系統(tǒng)的默認(rèn)編碼字符集來(lái)決定字符串的初始編碼,而且Java系統(tǒng)的輸入和輸出的都是采取操作系統(tǒng)的默認(rèn)編碼。
因此,如果能統(tǒng)一Java系統(tǒng)的輸入、輸出和操作系統(tǒng)3者的編碼字符集合,將能夠使Java系統(tǒng)正確處理和顯示漢字。這是處理Java系統(tǒng)漢字的一個(gè)原則,但是在實(shí)際項(xiàng)目中,能夠正確抓住和控制住Java系統(tǒng)的輸入和輸出部分是比較難的。J2EE中,由于涉及到外部瀏覽器和數(shù)據(jù)庫(kù)等,所以中文問(wèn)題亂碼顯得非常突出。
J2EE應(yīng)用程序是運(yùn)行在J2EE容器中。在這個(gè)系統(tǒng)中,輸入途徑有很多種:一種是通過(guò)頁(yè)面表單打包成請(qǐng)求(request)發(fā)往服務(wù)器的;第二種是通過(guò)數(shù)據(jù)庫(kù)讀入;還有第3種輸入比較復(fù)雜,JSP在***次運(yùn)行時(shí)總是被編譯成Servlet,JSP中常常包含中文字符,那么編譯使用javac時(shí),Java將根據(jù)默認(rèn)的操作系統(tǒng)編碼作為初始編碼。除非特別指定,如在Jbuilder/eclipse中可以指定默認(rèn)的字符集。
輸出途徑也有幾種:***種是JSP頁(yè)面的輸出。由于JSP頁(yè)面已經(jīng)被編譯成Servlet,那么在輸出時(shí),也將根據(jù)操作系統(tǒng)的默認(rèn)編碼來(lái)選擇輸出編碼,除非指定輸出編碼方式;還有輸出途徑是數(shù)據(jù)庫(kù),將字符串輸出到數(shù)據(jù)庫(kù)。
由此看來(lái),一個(gè)J2EE系統(tǒng)的輸入輸出是非常復(fù)雜,而且是動(dòng)態(tài)變化的,而Java是跨平臺(tái)運(yùn)行的,在實(shí)際編譯和運(yùn)行中,都可能涉及到不同的操作系統(tǒng),如果任由Java自由根據(jù)操作系統(tǒng)來(lái)決定輸入輸出的編碼字符集,這將不可控制地出現(xiàn)亂碼。
Java是一門跨平臺(tái)性的語(yǔ)言,使得字符集問(wèn)題必須由具體系統(tǒng)來(lái)統(tǒng)一解決,所以在一個(gè)Java應(yīng)用系統(tǒng)中,解決中文亂碼的根本辦法是明確指定整個(gè)應(yīng)用系統(tǒng)統(tǒng)一字符集。
分享題目:怎樣解決Java/J2EE中文問(wèn)題
轉(zhuǎn)載來(lái)于:http://m.fisionsoft.com.cn/article/coeegpc.html


咨詢
建站咨詢
