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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

漫談Java中的中文問題

2019-11-18 11:03:22
字體:
供稿:網(wǎng)友

 

摘要:關(guān)于java應(yīng)用在處理中文時所存在問題的討論已經(jīng)相當(dāng)多了,與大部分的討論不同,本文將從漢字字符的輸入和輸出的角度來討論Java語言處理中文時所存在的問題。

  盡管關(guān)于Java在處理中文字符時所存在的問題的討論已不乏其數(shù),但由于Java技術(shù)涉及內(nèi)容廣(J2EE包含了十幾種相關(guān)技術(shù)),技術(shù)供給商繁多,面向Java的Web服務(wù)器、應(yīng)用服務(wù)器以及JDBC數(shù)據(jù)庫驅(qū)動等都沒有官方的標(biāo)準(zhǔn),所以Java應(yīng)用在處理中文時出了存在固有的問題外也會隨著選用的服務(wù)器、驅(qū)動程序的不同產(chǎn)生一些與平臺相關(guān)的問題。也就是說,在處理中文問題時,Java代碼的可移植性打了折扣。

  總的看來,Java的中文處理問題較為集中地出現(xiàn)在jsp技術(shù)應(yīng)用和Java的數(shù)據(jù)庫訪問過程中。這是因為無論是JSP應(yīng)用還是基于JDBC的數(shù)據(jù)庫訪問都涉及到了Java程序與另外一種應(yīng)用系統(tǒng)的交互,這種交互不可避免的要求系統(tǒng)之間進(jìn)行數(shù)據(jù)的交互和參數(shù)的傳遞,而Java處理中文出現(xiàn)問題的地方往往就是這些數(shù)據(jù)讀入和輸出的地方。

  JSP程序所應(yīng)該注重的中文問題

  以Tomcat 3.2.1的JSP應(yīng)用為例,一般碰到中文問題可以使用如下的編碼強制轉(zhuǎn)換函數(shù)進(jìn)行內(nèi)碼的轉(zhuǎn)換。

public static String toChinese(String strvalue)
{
try{
if(strvalue==null)
return null;
else
{
strvalue = new String(strvalue.getBytes("ISO8859_1"), "GBK");
return strvalue;
}
}catch(Exception e){
return null;
}
}

  注重,在使用該函數(shù)前,我們需要分析中文無法正確輸出的原因到底是什么,而不能將所有的中文處理的問題都用這個方法來解決。例如,假如是由于忘記將JSP的輸出代碼定義為GB2312或GBK而產(chǎn)生的中文無法正確輸出就不能用這個函數(shù)來解決。一個好的習(xí)慣是在我們編寫每一個JSP頁面時都在文件的第一行定義程序所要輸出的字符集,如

<%@ page contentType="text/Html; charset=GBK" %>或<%@ page contentType="text/html; charset=GB2312" %>

  對于一些不支持定義輸出的字符集的JSP版本,我們也可以作如下的設(shè)置:

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">

  另外還需要注重的是,這個函數(shù)是用來解決那些確實出現(xiàn)了無法正確輸出中文的代碼,而不是一個通用的用來保證中文字符正確輸出的函數(shù)。由于中文字符無法正確的輸出或讀入的原因都是因為這個字符的編碼和系統(tǒng)缺省的字符集編碼(或者是應(yīng)用所要輸出的字符集,二者一般情況下是相同的)的不同引起的,所以在應(yīng)用該函數(shù)前我們必須確定我們所要讀入或輸出的字符的編碼到底與系統(tǒng)缺省的字符集編碼是否相同。
下面的例子將給出該函數(shù)的正確和錯誤使用的情況。例子所采用的JSP的系統(tǒng)為Tomcat 3.2.1,客戶端和服務(wù)器端的運行環(huán)境都是中文的Windows2000。

  例1

<%@ page contentType="text/html; charset=GBK" %>

<html>

<head>

 <title>

  testJSP

?。?title>

</head>

<body>

<h1>

<%

 class testChina extends Object{

  public String toChinese(String strvalue)

  {

   try{

    if(strvalue==null)

     return null;

    else

    {

     strvalue = new String(strvalue.getBytes("ISO8859_1"), "GBK");

     return strvalue;

    }

  }catch(Exception e){

   return null;

  }

 }

 public void test(){

 }

}

testChina testC = new testChina();

String str1 =new String("這是一個對中文支持的測試".getBytes("GBK"));

String str2=new String("這是一個對中文支持的測試".getBytes("GBK"),"ISO-8859-1");

String str3 =new String(testC.toChinese(str2));

out.");

out.println("str1");

out.println(str1+"
");

out.println("str2");

out.println(str2+"
");

out.println("str3");

out.println(str3+"
");

out.println("End
");

System.getProperties().list(System.out);

%>

</h1>

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 策勒县| 桃园县| 营山县| 裕民县| 南开区| 万荣县| 远安县| 铜陵市| 乾安县| 永寿县| 武川县| 黄梅县| 江城| 密云县| 华池县| 泰宁县| 新沂市| 平度市| 扎赉特旗| 任丘市| 津市市| 林周县| 泾川县| 临沂市| 柏乡县| 克山县| 吉隆县| 祁阳县| 广丰县| 嘉善县| 纳雍县| 济源市| 宁波市| 若羌县| 闸北区| 合水县| 彰化市| 乌审旗| 松江区| 汉寿县| 格尔木市|