新聞中心
P是一種動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)技術(shù),可以方便地實(shí)現(xiàn)網(wǎng)頁(yè)與數(shù)據(jù)庫(kù)的交互。然而,在使用P寫(xiě)入中文數(shù)據(jù)到數(shù)據(jù)庫(kù)中時(shí),可能會(huì)遇到中文亂碼的問(wèn)題。本文將介紹如何。

創(chuàng)新互聯(lián)建站專注于公主嶺企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站定制開(kāi)發(fā)。公主嶺網(wǎng)站建設(shè)公司,為公主嶺等地區(qū)提供建站服務(wù)。全流程按需策劃設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
1. 確定數(shù)據(jù)庫(kù)編碼方式
需要確定數(shù)據(jù)庫(kù)的編碼方式。常見(jiàn)的數(shù)據(jù)庫(kù)編碼方式包括UTF-8、GBK、GB2312等??梢酝ㄟ^(guò)在數(shù)據(jù)庫(kù)中執(zhí)行“show variables like ‘%character%’;”命令查看當(dāng)前數(shù)據(jù)庫(kù)的編碼方式。
2. 設(shè)置P頁(yè)面編碼方式
在P頁(yè)面中設(shè)置編碼方式可以防止出現(xiàn)亂碼。可以在P頁(yè)面的頭部添加以下代碼:
其中,“charset=UTF-8”表示使用UTF-8編碼方式。
3. 設(shè)置數(shù)據(jù)庫(kù)連接編碼方式
在P頁(yè)面中設(shè)置數(shù)據(jù)庫(kù)連接編碼方式也可以防止出現(xiàn)亂碼??梢栽跀?shù)據(jù)庫(kù)連接代碼中加入以下代碼:
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
其中,“useUnicode=true”表示使用Unicode編碼方式,“characterEncoding=UTF-8”表示使用UTF-8編碼方式。
4. 使用PreparedStatement進(jìn)行插入操作
在P頁(yè)面中插入中文數(shù)據(jù)時(shí),應(yīng)該使用PreparedStatement進(jìn)行操作,這樣可以避免SQL注入攻擊。同時(shí),PreparedStatement會(huì)自動(dòng)處理數(shù)據(jù)編碼方式,避免出現(xiàn)亂碼。
以下是一個(gè)使用PreparedStatement插入中文數(shù)據(jù)的示例代碼:
<%
String name = request.getParameter(“name”);
String sql = “INSERT INTO user(name) VALUES(?)”;
Connection conn = null;
PreparedStatement pstmt = null;
try{
Class.forName(“com.mysql.jdbc.Driver”);
conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8”, “root”, “123456”);
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(pstmt != null){
pstmt.close();
}
if(conn != null){
conn.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
%>
需要注意的是,當(dāng)使用PreparedStatement進(jìn)行插入操作時(shí),需要將中文數(shù)據(jù)轉(zhuǎn)換為UTF-8編碼方式,否則插入的數(shù)據(jù)仍然會(huì)出現(xiàn)亂碼。
5. 統(tǒng)一編碼方式
為了避免不同部分的編碼方式不統(tǒng)一導(dǎo)致的亂碼問(wèn)題,建議統(tǒng)一使用UTF-8編碼方式。
可以通過(guò)設(shè)置P頁(yè)面、數(shù)據(jù)庫(kù)連接、數(shù)據(jù)庫(kù)等多個(gè)地方來(lái)統(tǒng)一編碼方式,避免出現(xiàn)亂碼。
P是一種非常便捷的動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)技術(shù),可以方便地實(shí)現(xiàn)網(wǎng)頁(yè)與數(shù)據(jù)庫(kù)的交互。當(dāng)使用P寫(xiě)入中文數(shù)據(jù)到數(shù)據(jù)庫(kù)中時(shí),可能會(huì)遇到中文亂碼的問(wèn)題。本文介紹了如何,包括確定數(shù)據(jù)庫(kù)編碼方式、設(shè)置P頁(yè)面編碼方式、設(shè)置數(shù)據(jù)庫(kù)連接編碼方式、使用PreparedStatement進(jìn)行插入操作、統(tǒng)一編碼方式等。只要按照這些步驟進(jìn)行操作,就可以有效地避免中文亂碼問(wèn)題,讓P開(kāi)發(fā)更加順暢。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
請(qǐng)問(wèn)我的jsp網(wǎng)頁(yè)文本框中輸入中文,存到數(shù)據(jù)庫(kù)中顯示為亂碼如何解決
如圖在連接數(shù)孫核襲據(jù)則兄庫(kù)時(shí)氏乎增加上面
漢字亂碼現(xiàn)象有4種類型:
1.文本亂碼:是Windows系統(tǒng)顯示亂碼,如培祥:菜單、桌面、提示框等。這是由于注冊(cè)表中有關(guān)字體部分的設(shè)置不當(dāng)引起的;
2.文檔亂碼:是各種應(yīng)用程序、游戲本來(lái)顯示中文的地方出現(xiàn)亂碼。這種亂碼形成的原因比較復(fù)雜,有第1類的亂碼原因,也可能是軟件中用到的中文動(dòng)態(tài)鏈接庫(kù)被英文動(dòng)態(tài)鏈接庫(kù)覆蓋所造成的;
3.文件亂碼:主要是指郵件亂碼;
4.網(wǎng)頁(yè)亂碼:是由于港臺(tái)的繁體中文大五碼(BIG5)與大陸簡(jiǎn)體中文(GB2312)不通用而造成的。
消除配老搏各類亂碼的方法
一 系統(tǒng)亂碼的消除方法
這類亂碼是由于在Windows注冊(cè)表中,關(guān)于字體部分配置不正常造成的,即使你用內(nèi)碼翻譯軟件處理也不會(huì)消除這類亂碼。那怎么辦呢?請(qǐng)跟我來(lái):
方法一:找一臺(tái)與你的含尺Windows版本相同且顯示正常的機(jī)器,依下列步驟進(jìn)行:
1.在正常機(jī)器上選擇“開(kāi)始”→“運(yùn)行”,在對(duì)話框中鍵入“regedit”,打開(kāi)注冊(cè)表編輯器;
2.請(qǐng)你將光標(biāo)定位到“HKEY_LOCAL_MACHINE\ system\CurrentControlSet\Control\ Fontassoc”,然后選擇“注冊(cè)表”→“導(dǎo)出注冊(cè)表文件”,再選擇“分支”,導(dǎo)出該分支注冊(cè)表信息到文件(如ZT.REG)中;
3.把ZT.REG文件拷貝到你那顯示亂碼的機(jī)器上,方法是:在顯示亂碼的機(jī)器上運(yùn)行“regedit”,打開(kāi)注冊(cè)表編輯器,選擇“注冊(cè)表”→“導(dǎo)入注冊(cè)注冊(cè)表”,把ZT.REG文件導(dǎo)入注冊(cè)表中即可。
方法二:如果你找不到一臺(tái)與你的Windows版本相同且顯示正常的機(jī)器,則需要手工恢復(fù)字體部分的注冊(cè)表
項(xiàng),其步驟是:
1.首先在顯示亂碼的機(jī)器上選擇“開(kāi)始”→“運(yùn)行”,在對(duì)話框中鍵入“regedit”,打開(kāi)注冊(cè)表編輯器;
2.選擇“HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Control\Fontassoc”,正常情況下,會(huì)有Associated DeaultFonts、Associated CharSet兩個(gè)文件夾,其正確的內(nèi)容應(yīng)是:
子目錄內(nèi)容
中文Win98
中文Win98(OEM版)
中文Win2023
Associated CharSet
ANSI(00)=“yes”
GB2312(86)=“yes”
DEN(FF)=“yes”
SYMBOL(02)=“no”
ANSI(00)=“yes”
GB2312(86)=“yes”
OEM(FF)=“yes”
SYMBOL(02)=“no”
ANSI(00)=“yes”
OEM(FF)=“yes”
SYMBOL(02)=“no”
Associated DefaultFonts
AssocSystemFont=“simsun.ttf”
FontPackageDecorative=“宋體”
FontPackageDontcare=“宋體”
FontPackageModern=“宋體”
FontPackageRoman=“宋體”
FontPackageScript=“宋體”
FontPackageSwiss=“宋體”
或
AssocSystemFont=“simsun.ttf”
FontPackage=“新宋體”
FontPackageDecorative=“新宋體”
FontPackageDontcare=“新宋體”
FontPackageModern=“新宋體”
FontPackageRoman=“新宋體”
FontPackageScript=“新宋體”
FontPackageSwiss=“新宋體”
3.當(dāng)出現(xiàn)漢字亂碼時(shí),上述兩個(gè)文件夾中的內(nèi)容就會(huì)不完整,有的沒(méi)有Associated CharSet文件夾或其中的內(nèi)容殘缺不全;有的 Associated DefaulFonts下的內(nèi)容殘缺。如果遇到這種情況怎么辦呢?其實(shí)你只要打開(kāi)注冊(cè)表編輯器,在 “HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Fonassoc”下,根據(jù)以上的正確內(nèi)容恢復(fù)即可。
二 應(yīng)用程序、游戲亂碼的消除方法
明明是中文軟件,可顯示界面上卻出現(xiàn)亂碼,這可能是由于注冊(cè)表中關(guān)于字體設(shè)置的信息不正確地被改變而造成的,一般是因?yàn)檐浖闹形逆溄訋?kù)被英文鏈接庫(kù)覆蓋而引起的,這種現(xiàn)象經(jīng)常發(fā)生在用微軟開(kāi)發(fā)工具,例如VB、VC開(kāi)發(fā)的中文軟件上。在這類軟件中,菜單等顯示界面上的漢字都是受一個(gè)動(dòng)態(tài)鏈接庫(kù)“.DLL文件”控制,而軟件的這個(gè)動(dòng)態(tài)鏈接庫(kù)一般是安裝在Win 98/2023的System目錄下的,如果以后你安裝了某個(gè)英文軟件也使用同名的動(dòng)態(tài)鏈接庫(kù),則英文軟件的動(dòng)態(tài)鏈接庫(kù)就會(huì)覆蓋掉你原先的Windows\System下的中文軟件的動(dòng)態(tài)鏈接庫(kù)。這樣,當(dāng)你運(yùn)行中文軟件時(shí)就會(huì)調(diào)用英文的動(dòng)態(tài)鏈接庫(kù),因此出現(xiàn)亂碼。解決辦法是重新安裝中文軟件,恢復(fù)中文動(dòng)態(tài)鏈接庫(kù)即可。
通過(guò)Jsp往Oracle數(shù)據(jù)庫(kù)中提交數(shù)據(jù)為什么漢字會(huì)出現(xiàn)亂碼的問(wèn)題?
出現(xiàn)亂碼往畝老往是因?yàn)槟硞€(gè)地方編碼不碰手一致導(dǎo)致的,這需要從如下幾個(gè)方面檢查。
1、Jsp頁(yè)面的編碼pageEncoding、字符迅吵升編碼charset
2、頁(yè)面提交到后臺(tái),后臺(tái)的應(yīng)用程序處理編碼
3、數(shù)據(jù)庫(kù)的編碼是否和程序的保持一致
4、jdbc連接數(shù)據(jù)庫(kù)的連接字串是否和數(shù)據(jù)庫(kù)保持一致
因?yàn)槭褂玫木幋a沒(méi)有統(tǒng)一!
比如數(shù)據(jù)庫(kù)使用的UTF-8編碼,而你的P端使用GBK編碼!寫(xiě)入數(shù)據(jù)庫(kù)的中文就會(huì)出現(xiàn)亂虧如鄭碼了!
解決辦法就是把編碼統(tǒng)銷頌一就可以了,一般是在P頁(yè)面做處理,假如你的數(shù)橡兆據(jù)庫(kù)編碼是UTF-8,則P頁(yè)面加入下列代碼
關(guān)于jsp 寫(xiě) 數(shù)據(jù)庫(kù) 中文亂碼的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),香港虛擬主機(jī)被稱為香港虛擬空間/香港網(wǎng)站空間,或者簡(jiǎn)稱香港主機(jī)/香港空間。香港虛擬主機(jī)特點(diǎn)是免備案空間開(kāi)通就用, 創(chuàng)新互聯(lián)香港主機(jī)精選cn2+bgp線路訪問(wèn)快、穩(wěn)定!
分享標(biāo)題:解決P寫(xiě)入數(shù)據(jù)庫(kù)中文亂碼問(wèn)題(jsp寫(xiě)數(shù)據(jù)庫(kù)中文亂碼)
文章來(lái)源:http://m.5511xx.com/article/cdpdcse.html


咨詢
建站咨詢
