&nbs..."/>
溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

在Jsp/Servlet中的中文解決辦法 (轉(zhuǎn))

發(fā)布時(shí)間:2020-08-12 19:42:11 來(lái)源:ITPUB博客 閱讀:140 作者:worldblog 欄目:編程語(yǔ)言
在Jsp/Servlet中的中文解決辦法 (轉(zhuǎn))[@more@]

在JSP/servlet中的中文解決辦法XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

  Java的中文問(wèn)題一直很讓人頭痛。也許是因?yàn)橛兄形挠泻芏嘧址木壒拾伞?/P>

  這里我們先說(shuō)Servlet的問(wèn)題。

  眾所周知,Servlet是需要預(yù)先編譯的,就不得不談到j(luò)ava的編譯問(wèn)題。

  Java內(nèi)容是使用Unicode字符集的。所以基本上可以對(duì)大多數(shù)語(yǔ)言提供支持(當(dāng)然,如果你會(huì)某種特殊的不常見(jiàn)的語(yǔ)言,Java就不一定支持了),所以相對(duì)來(lái)說(shuō),Java對(duì)多語(yǔ)言的支持相當(dāng)好,甚至你可以使用中文的類(lèi)名和中文的方法名,編譯運(yùn)行同樣沒(méi)有問(wèn)題。但是大多數(shù)的操作系統(tǒng)并不是都對(duì)Unicode提供良好的支持,至少Javac默認(rèn)是使用系統(tǒng)自帶的字符集來(lái)進(jìn)行編譯,例如:如果你的操作系統(tǒng)是中文Win2k,那么你的默認(rèn)字符集就是GBK;如果你使用的是日文的win2k,那么你的默認(rèn)字符集就是MS932。而Javac默認(rèn)是調(diào)用系統(tǒng)的字符集進(jìn)行編譯,也就是Javac中的Encoding參數(shù)默認(rèn)的是使用系統(tǒng)的字符集。知道了這一點(diǎn)這個(gè)問(wèn)題就容易解決了。如果你的程序中包含了不被當(dāng)前系統(tǒng)默認(rèn)字符集支持的字符,那么你需要制定你的字符集來(lái)進(jìn)行編譯了。不過(guò)偶爾也會(huì)有一些問(wèn)題,不過(guò)這個(gè)不是java的問(wèn)題了。就拿記事本來(lái)說(shuō),如果你用記事本寫(xiě)程序那么保存程序的時(shí)候就會(huì)使用記事本默認(rèn)的Ansi字符編碼方式來(lái)保存。這種情況同樣也容易導(dǎo)致亂碼的產(chǎn)生,所以在使用ide的時(shí)候最好同時(shí)制定他的編碼方式。

  現(xiàn)在說(shuō)說(shuō)Jsp的問(wèn)題。

這個(gè)處理起來(lái)相對(duì)簡(jiǎn)單一些,只要你在頁(yè)頭上指定了類(lèi)似Mailto:%25@page%20language=%22java%22%20contentType=%22text/html;charset=UTF-8%22%20%25">%@page language="java" contentType="text/html;charset=UTF-8" %這樣的語(yǔ)句,基本上就沒(méi)有問(wèn)題了。同樣需要你的IDE制定一個(gè)字符編碼,避免出現(xiàn)亂碼問(wèn)題。

以上簡(jiǎn)單的解決了中文亂碼的問(wèn)題。不過(guò)我個(gè)人覺(jué)得這并不是一個(gè)最好的解決辦法,因?yàn)槟氵€受到系統(tǒng)和IDE的字符集的限制,在實(shí)現(xiàn)跨平臺(tái)的時(shí)候還是容易出現(xiàn)問(wèn)題。我要接受我比較欣賞的一種方法,也許這種方法大家現(xiàn)在都已經(jīng)在用了。

我推薦使用Properties文件來(lái)保存相應(yīng)的文本信息,這樣做有如下優(yōu)點(diǎn):

1.  可以很靈活的替換文本,實(shí)現(xiàn)多語(yǔ)言界面。

2.  可以根本性的避免亂碼問(wèn)題

第一點(diǎn)我不說(shuō)大家也能體會(huì)得到。重點(diǎn)說(shuō)說(shuō)第二點(diǎn)。

jdk中自帶了一個(gè)nactive2acsii的命令,這個(gè)命令是把當(dāng)前字符轉(zhuǎn)化成ascii字符。

當(dāng)前并不是所有的操作系統(tǒng)都支持unicode或者其他的什么字符編碼,但是據(jù)我所知對(duì)于ascii碼都是支持的,所以我們只要把我們的文本轉(zhuǎn)化成ascii碼就可以了。而通過(guò)nactive2acsii就可以實(shí)現(xiàn)這個(gè)功能了。這個(gè)程序在Java_Home/Bin下面。各位可以自己試驗(yàn)一下。

  版權(quán)歸iBeyond所有,你也許可以通過(guò)http://www.ibeyond.org得到更多信息,你也可以通過(guò)csdn@ibeyond.org和我聯(lián)系。
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI