存在的問題
根據方法實現的方式,我們可以將以上四種方法分為兩類,一類是通過利用某些標準或者規則來實現的方法,上面的1)、2)、4)都屬于此類;一類是通過針對性的編程來實現的方法,上面所提的方法3)就屬于此類。
由于方法1),2),4)是具有規范性的一類方法,所以方法比較簡單,解決方案也不具備較大的針對性,較為通用,例如我們可以采用方法2)的編譯方式通過編譯Java源文件來實現內碼的預置,而無需考慮源碼到底有哪些部分出現了Java的中文處理問題,諸如輸出亂碼等等。
但是,正由于這些方法不具備針對性,解決問題的方法過于統一,所以在某些情況下,它們并不能徹底地解決Java的中文問題。舉一個非常常見的例子。在通常情況下,用戶的Java應用往往需要與其它Java應用接口進行交互,例如通過某種版本的JDBC訪問數據庫。由于JDBC的驅動所支持的編碼隨著提供商乃至版本的不同而不同,所以如果在數據庫的輸入輸出過程中出現中文不能正確處理問題時,我們需要在數據的輸入和輸出過程做兩次正好相反的編碼轉換,這對于方法1),2),4)來說,往往是無法解決的。當然,對于方法2,我們也可以通過采用一些技巧使來滿足上面的情況,一個最有效的辦法就是盡量將Java應用的各個部分組件化。例如我們可以通過將數據庫的讀入和輸出代碼分解在不同的源文件上來實現分別編譯,從而滿足不同的字符編碼要求。但是通常的程序設計都不太可能滿足這種要求,因為這種程序的劃分結果很可能是不合理的。例如,我們將數據庫的讀出和寫入方法封裝到一個類中是比較合適的一種設計,但如果將該類的這兩個方法分別實現在兩個文件里則變得非常不合理。因此對于1),2),4)方法來說,雖然實現比較簡單,但卻具有一些無法克服的缺點。這也是那些實現起來相對復雜的編程方法得以流行的原因。
相對于方法1),2),4)來說,方法3)具有更好的針對性和靈活性。程序可以根據不同的情況做出靈活的處理,在任何需要的地方進行字符的編碼轉換,但是該方法的特點也對軟件的開發人員提出了更高要求--必須能夠準確的捕捉到有可能發生中文處理問題的地方,并做出正確的判斷和處理。
分析的原則
總的說來,所有解決Java中文處理的方法都不是很復雜。相反的是,由于Java技術特別是J2EE技術涉及的內容繁多,各種Web服務器、應用服務器以及JDBC數據庫驅動等參差不齊,所以如何正確而及時的發現應用的中文處理問題則變得相對復雜的多。那么我們如何來發現這些問題呢?
文章來源于領測軟件測試網 http://www.kjueaiud.com/