新聞中心
在開發(fā)P頁(yè)面連接數(shù)據(jù)庫(kù)時(shí),我們常常會(huì)出現(xiàn)亂碼的問(wèn)題。這會(huì)給我們的開發(fā)帶來(lái)麻煩,同時(shí)也會(huì)降低用戶的體驗(yàn)。在本文中,我們將介紹幾種的方法。

創(chuàng)新互聯(lián),為您提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)站營(yíng)銷推廣、網(wǎng)站開發(fā)設(shè)計(jì),對(duì)服務(wù)玻璃貼膜等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)及推廣經(jīng)驗(yàn)。創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司成立于2013年,提供專業(yè)網(wǎng)站制作報(bào)價(jià)服務(wù),我們深知市場(chǎng)的競(jìng)爭(zhēng)激烈,認(rèn)真對(duì)待每位客戶,為客戶提供賞心悅目的作品。 與客戶共同發(fā)展進(jìn)步,是我們永遠(yuǎn)的責(zé)任!
為什么會(huì)出現(xiàn)亂碼問(wèn)題?
在介紹解決方法之前,先來(lái)了解一下為什么會(huì)出現(xiàn)亂碼問(wèn)題。P頁(yè)面連接數(shù)據(jù)庫(kù)時(shí),通常都是用的JDBC來(lái)操作的。在JDBC中,我們使用的是字符串的編碼格式,而在P頁(yè)面中,我們使用的是頁(yè)面的編碼格式。這兩種編碼格式不一致,就會(huì)導(dǎo)致亂碼。
解決方法一:設(shè)置頁(yè)面編碼格式
在P頁(yè)面中,我們可以設(shè)置頁(yè)面的編碼格式,以此來(lái)解決亂碼問(wèn)題。具體來(lái)說(shuō),我們需要在P頁(yè)面的頭部添加一個(gè)meta標(biāo)簽,指定頁(yè)面的編碼格式。例如:
“`html
“`
在這個(gè)例子中,我們指定了頁(yè)面的編碼格式為UTF-8。這樣,在頁(yè)面中使用中文時(shí),就可以正常顯示了。
同時(shí),我們還需要在請(qǐng)求中添加一個(gè)參數(shù),指定請(qǐng)求的編碼格式。例如:
“`java
request.setCharacterEncoding(“UTF-8”);
“`
這樣,就可以。
解決方法二:設(shè)置JDBC的編碼格式
另一種解決亂碼問(wèn)題的方法是設(shè)置JDBC的編碼格式。通常情況下,JDBC使用的編碼格式是ISO-8859-1。我們可以使用以下代碼將其改為UTF-8:
“`java
Connection conn = DriverManager.getConnection(url, username, password);
conn.createStatement().execute(“SET NAMES UTF-8”);
“`
這里,我們使用MySQL數(shù)據(jù)庫(kù)作為例子。在連接數(shù)據(jù)庫(kù)后,我們通過(guò)execute方法來(lái)設(shè)置編碼格式為UTF-8。這樣,在執(zhí)行SQL語(yǔ)句時(shí),就可以正常顯示中文了。
解決方法三:使用轉(zhuǎn)碼工具
我們介紹一種更通用的解決方法,即使用轉(zhuǎn)碼工具。在P頁(yè)面連接數(shù)據(jù)庫(kù)時(shí),我們可以使用轉(zhuǎn)碼工具將JDBC的編碼格式轉(zhuǎn)換為頁(yè)面的編碼格式。具體來(lái)說(shuō),我們可以使用Java的String類的getBytes方法,將JDBC的字符串轉(zhuǎn)換為頁(yè)面的字符串。例如:
“`java
String name = rs.getString(“name”);
name = new String(name.getBytes(“ISO-8859-1”), “UTF-8”);
“`
在這個(gè)例子中,我們使用了ResultSet類的getString方法獲取查詢結(jié)果,并將其轉(zhuǎn)換為UTF-8編碼的字符串。這樣,在P頁(yè)面中使用這個(gè)字符串時(shí),就可以正常顯示中文了。
結(jié)論
在P頁(yè)面連接數(shù)據(jù)庫(kù)時(shí),經(jīng)常會(huì)出現(xiàn)亂碼問(wèn)題。為了解決這個(gè)問(wèn)題,我們可以使用上面介紹的三種方法中的任意一種。具體選擇哪種方法,取決于您的具體情況。在實(shí)際開發(fā)中,我們應(yīng)該根據(jù)情況靈活運(yùn)用這些方法,以保證程序的正常運(yùn)行。
相關(guān)問(wèn)題拓展閱讀:
- jsp中文亂碼
jsp中文亂碼
request.setCharacterEncoding(“GBK”);
response.setContentType(“源基悄型text/雹運(yùn)謹(jǐn)html;charset=GBK”);
漢字編碼問(wèn)題。以下是我從網(wǎng)上搜索到的相關(guān)漢字編碼問(wèn)題的解決方案,希望能幫到你。1 表單提交的數(shù)據(jù),用request.getParameter(“xxx”)返回的字符串為亂碼或者??
2 直接通過(guò)url如
中國(guó),這樣的get請(qǐng)求在服務(wù)端用request. getParameter(“name”)時(shí)返回的是亂碼;按tomcat4的做法設(shè)置Filter也沒(méi)有用或者用request.setCharacterEncoding(“GBK”);也不管用
原因:
1 tomcat的j2ee實(shí)現(xiàn)對(duì)表單提交即post方式提示時(shí)處理液升參數(shù)采用缺省的iso來(lái)處理
2 tomcat對(duì)get方式提交的請(qǐng)求對(duì)query-string 處理時(shí)采用了和post方法不一樣的處理方式。(與tomcat4不一樣,所以設(shè)置setCharacterEncoding(“gbk”))不起作用含祥。
解決辦法:
首先所有的jsp文件都加上:
1 實(shí)現(xiàn)一個(gè)Filter.設(shè)置處理字符集為GBK。(在tomcat的webapps/servlet-examples目錄有一個(gè)完整的例子。請(qǐng)參考web.xml和SetCharacterEncodingFilter的配置。)
1)只要把%TOMCAT安裝目錄%/ webapps\servlets-examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.class文件拷到你的webapp目錄/filters下,如果沒(méi)有filters目錄,就創(chuàng)建一個(gè)。
2)在你的web.xml里加入如下幾行:
Set Character Encoding
filters.SetCharacterEncodingFilter
encoding
GBK
Set Character Encoding
/*
3)完成.
2 get方式的解決辦法
1) 打開tomcat的server.xml文件,找到區(qū)塊,加入如下一行:
URIEncoding=”GBK”
完整的應(yīng)如下:
2)重啟tomcat,一切OK。
一、P頁(yè)面顯示亂碼
下面的顯示頁(yè)面(display.jsp)就出現(xiàn)亂碼:
P的中文處理
對(duì)不同的WEB服務(wù)器和不同的JDK版本,處理結(jié)果就不一樣。原因:服務(wù)器使用的編碼方式不同和瀏覽器對(duì)不同的字符顯示結(jié)果不同而導(dǎo)致的。解決辦法:在P頁(yè)面中指定編碼方式(gb2312),即在頁(yè)面的之一行加上:,就可以消除亂碼了。完整頁(yè)面如下:
P的中文處理
二、表單提交中文時(shí)出現(xiàn)亂碼
下面是一個(gè)提交頁(yè)面(submit.jsp),代碼如下:
P的中文處理
下面是處理頁(yè)面(process.jsp)代碼:
P的中文處理
如果submit.jsp提交英文字符能正確顯示,如果提交中文時(shí)就會(huì)出現(xiàn)亂碼。原因:瀏覽器默認(rèn)使用UTF-8編碼方式來(lái)發(fā)送請(qǐng)求,而UTF-8和GB2312編碼方式表示字符時(shí)不一樣,這樣就出現(xiàn)了不能識(shí)別字符。解決辦法:通過(guò)request.seCharacterEncoding(“gb2312”)對(duì)請(qǐng)求進(jìn)行統(tǒng)一編碼,就實(shí)現(xiàn)了中文的正常顯示。修改后的process.jsp代碼如下:
P的中文處理
三、數(shù)據(jù)庫(kù)連接出現(xiàn)亂碼
只要涉及中文的地方全部是亂碼,解決辦法:在數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)URL中加上useUnicode=true&characterEncoding=GBK就OK了。
四、數(shù)據(jù)庫(kù)的顯示亂碼
在mysql4.1.0中,varchar類型,text類型就會(huì)出現(xiàn)中文亂碼,對(duì)于varchar類型把它設(shè)為binary屬性就可以解決中文問(wèn)題,對(duì)于text類型就要用一個(gè)編碼轉(zhuǎn)換類來(lái)處理,實(shí)現(xiàn)如下:
public class Convert {
/** 把ISO碼轉(zhuǎn)換成GB2312
*/
public static String ISOtoGB(String iso){
String gb;
try{
if(iso.equals(“”) || iso == null){
return “”;
}
else{
iso = iso.trim();
gb = new String(iso.getBytes(“ISO”),”GB2312″);
return gb;
}
}
catch(Exception e){
System.err.print(“編碼轉(zhuǎn)換錯(cuò)誤:”+e.getMessage());
return “”;
}
}
}
把它編譯成class,就可以調(diào)用Convert類的靜態(tài)方法ISOtoGB()來(lái)轉(zhuǎn)換編碼。
跟你說(shuō)個(gè)最簡(jiǎn)單的友則方法。。。。
在你想要獲得值的地方是用的String sth=request.getParameter(“errmsg”)對(duì)吧
你把它改為String sth=new String(request.getParameter(“errmsg”).getBytes(“ISO”),”GBK”);就含告凳可以了談旅
希望對(duì)你有所幫助~~
request.setCharacterEncoding(“GBK”);
response.setContentType(“源基悄型text/雹運(yùn)謹(jǐn)html;charset=GBK”);
關(guān)于jsp 數(shù)據(jù)庫(kù) 亂碼的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都服務(wù)器租用選創(chuàng)新互聯(lián),先試用再開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。物理服務(wù)器托管租用:四川成都、綿陽(yáng)、重慶、貴陽(yáng)機(jī)房服務(wù)器托管租用。
當(dāng)前標(biāo)題:解決P頁(yè)面連接數(shù)據(jù)庫(kù)時(shí)出現(xiàn)的亂碼問(wèn)題 (jsp 數(shù)據(jù)庫(kù) 亂碼)
分享路徑:http://m.5511xx.com/article/djsesss.html


咨詢
建站咨詢
