亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java中文相關(guān)技術(shù)

瀏覽:6日期:2024-06-22 09:17:13
內(nèi)容: 在應(yīng)用開發(fā)的過程中,總會(huì)遇到一些“難以理解的系統(tǒng)缺陷和“不易解決的問題。其實(shí),通過認(rèn)真分析,不必購(gòu)買昂貴的產(chǎn)品依然可以解決多數(shù)問題。■JDBC ODBC Bridge的Bug及其解決方法在編寫一數(shù)據(jù)庫(kù)管理程序時(shí),發(fā)現(xiàn)JDBC-ODBC Bridge存在不易發(fā)現(xiàn)的Bug。在向數(shù)據(jù)表插入數(shù)據(jù)時(shí),如果為英文字符,存儲(chǔ)內(nèi)容完全正確,如果存入中文字符,部分?jǐn)?shù)據(jù)庫(kù)只能存儲(chǔ)前七八個(gè)中文字符,其他內(nèi)容被截去,導(dǎo)致存儲(chǔ)內(nèi)容的不完整(有些數(shù)據(jù)庫(kù)不存在這個(gè)問題,如Sybase SQL Anywhere 5.0。JDBC-ODBC Bridge還存在無(wú)法建表的Bug)。對(duì)于廣大需要存儲(chǔ)中文信息的Java程序員來說,這可是一個(gè)不好的消息。要么改用其他語(yǔ)言編程,要么選擇其他價(jià)格昂貴的數(shù)據(jù)庫(kù)產(chǎn)品。“一次編寫,到處運(yùn)行的目標(biāo),也大打折扣。能不能采用變通的方法,將中文信息進(jìn)行處理后再存儲(chǔ)來解決這個(gè)問題呢?答案是肯定的。解決問題的具體思路、方法Java采用Unicode碼編碼方式,中英文字符均采用16bit存儲(chǔ)。既然存儲(chǔ)英文信息是正確的,根據(jù)一定規(guī)則,將中文信息轉(zhuǎn)換成英文信息后存儲(chǔ),自然不會(huì)出現(xiàn)截尾現(xiàn)象。讀取信息時(shí)再進(jìn)行逆向操作,將英文信息還原成中文信息即可。由GB2312編碼規(guī)則可知,漢字一般為二個(gè)高位為1的ASCII碼,在轉(zhuǎn)換時(shí)將一個(gè)漢字的二個(gè)高位1去掉,還原時(shí)再將二個(gè)高位1加上。為了處理含有英文字符的中文字串,對(duì)英文字符則需要加上一個(gè)Byte 0標(biāo)記。以下提供的兩個(gè)公用靜態(tài)方法,可加入任何一個(gè)類中使用。將中英文字串轉(zhuǎn)換成純英文字串public static String toTureAsciiStr(String str){StringBuffer sb = new StringBuffer();byte[] bt = str.getBytes();for(int i =0 ;i〈btelse{//是英文字符 補(bǔ)0作記錄sb.append((char)0);sb.append((char)bt[i]); } }return sb.toString();}將經(jīng)轉(zhuǎn)換的字串還原public static String unToTrueAsciiStr(String str){ byte[] bt = str.getBytes(); int i,l=0,length = bt.length,j=0; for(i = 0;i〈length;i++){ if(bt[i] == 0){ l++; } } byte []bt2 = new byte[length-l]; for(i =0 ;i〈length;i++){ if(bt[i] == 0){ i++; bt2[j] = bt[i]; }else{ bt2[j] = (byte)(bt[i]|0x80); } j++; }String tt = new String(bt2);return tt;}上例在實(shí)際編程中效果很好,只是存儲(chǔ)的中文信息需要經(jīng)過同樣處理,才能被其他系統(tǒng)使用。而且如果中文字串出現(xiàn)英文字符,實(shí)際上增加了額外的存儲(chǔ)空間。■Solaris下Servlet編程的中文問題及解決辦法在使用Java開發(fā)Internet上的一個(gè)應(yīng)用系統(tǒng)時(shí),發(fā)現(xiàn)在Windows下調(diào)試完全正常的Servlet,上傳到Solaris 服務(wù)器上,運(yùn)行卻出現(xiàn)故障——返回的網(wǎng)頁(yè)不能顯示中文,應(yīng)為中文的信息全為亂碼;用中文信息做關(guān)鍵字,不能正確檢索數(shù)據(jù)庫(kù)。后來采用加入檢查代碼等方法探知故障原因如下:顯示亂碼主要是因?yàn)橥ㄟ^類 HttpServletResponse提供的方法setContentType 無(wú)法改變返回給客戶的數(shù)據(jù)的編碼方式,正確的編碼方式應(yīng)為GB2312或者GBK,而事實(shí)上為缺省的ISO8859-1。無(wú)法檢索中文信息則是因?yàn)椋蛻籼峤坏闹形男畔⒔?jīng)瀏覽器編碼到達(dá)服務(wù)器后,Servlet無(wú)法將其正確解碼。舉例說明顯示亂碼解決方法Servlet 一般通常做法如下:public class ZldTestServlet extends HttpServlet {public void doGet (HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{//在使用 Writer向?yàn)g覽器返回?cái)?shù)據(jù)前,設(shè)置 content-type header ,在這里設(shè)置相應(yīng)的字符集gb2312response.setContentType('text/html;charset=gb2312');PrintWriter out = response.getWriter(); //*// 正式返回?cái)?shù)據(jù)out.println('〈html〉〈head〉〈title〉Servlet test〈/title〉〈/head〉' )out.println('這是一個(gè)測(cè)試頁(yè)!');out.println('〈/body〉〈/html〉');out.close();} ...}解決頁(yè)面顯示亂碼問題,需將*處代碼換成如下內(nèi)容:PrintWriter out = new PrintWriter(new OutputStreamWriter(response.getOutputStream(),'gb2312'));Solaris中文信息檢索問題的解決瀏覽器利用表單向服務(wù)器提交信息時(shí),一般采用x-www-form-urlencoded 的MIME格式對(duì)數(shù)據(jù)進(jìn)行編碼。如果使用get方法,參數(shù)名稱和參數(shù)值經(jīng)編碼后附加在URL后,在Java中稱作查詢串(query string)。在Servlet程序中,如果采用ServletRequest的方法getParameter取得參數(shù)值,在Solaris環(huán)境下,對(duì)漢字卻不能正確解碼。因而無(wú)法正確檢索數(shù)據(jù)庫(kù)。在Java 1.2的包——java.net中提供了URLEncode和URLDecode類。類URLEncode提供了按x-www-form-urlencoded格式對(duì)給定串進(jìn)行轉(zhuǎn)換的方法。類URLEncode則提供了逆方法。在編寫某網(wǎng)上114查詢的Servlet時(shí),采用先取得查詢串,再利用類URLDecode解碼,再?gòu)慕獯a后的串中取得參數(shù),很好地解決了Solrais環(huán)境下,中文信息檢索的問題。源代碼就不在這里給出了,如果需要請(qǐng)和筆者聯(lián)系。 Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 婷婷性 | 免费视频一区二区三区四区 | 黄色片在线看 | 黄色美国大片 | 成人免费看黄页网址大全 | 欧美国产一区二区三区 | 黄色小视频免费在线观看 | 久久综合久久综合久久综合 | a毛片在线看片免费 | 国产精品久久久亚洲456 | 可以免费观看欧美一级毛片 | 国产三级精品三级国产 | 九九精品免费视频 | 成人在线视频网 | 亚洲国产精品久久久久 | 黄色a级片在线观看 | 成人在线免费视频 | 国精视频一区二区视频 | 国产福利一区二区三区四区 | 五月婷婷综合在线视频 | 国产成人精品视频一区二区不卡 | 国产社区在线 | 午夜性刺激片免费观看成人 | 国产精品天天看天天爽 | 网友自拍一区 | 啪啪免费网站视频观看 | 国产美女挤奶水在线观看 | 乱乳性高清 | 亚洲成人第一 | 香蕉tv亚洲专区在线观看 | a男人的天堂久久a毛片 | 一区二区三区欧美在线 | 曰韩毛片| 国产高清不卡码一区二区三区 | 高清不卡毛片免费观看 | 日本人伦一区二区三区 | 国产伦精品一区二区三区精品 | 欧美一级特黄aa大片 | 日韩美一区二区 | 成人精品国产亚洲欧洲 | 久久亚洲成人 |