平特心水报图
新網絡營銷基礎與實踐

你的位置:首頁 >網絡營銷 >ASP數據庫操作亂碼解決方案

ASP數據庫操作亂碼解決方案

ASP數據庫操作亂碼解決方案

在使用asp進行數據庫操作過程中,相信很多同學都遇到數據亂碼問題。ASP數據亂碼主要表現為以下幾種情形:第一,非中文數據可以正常存入數據庫,中文數據存入數據庫后出現了亂碼;第二,數據庫中的英文數據可以正確顯示在頁面中,數據庫中的中文數據在頁面顯示時出現了亂碼;第三,數據庫中的數據(含中文)在頁面顯示時正確,但頁面本身所包含的中文卻出現亂碼。
上述問題的出現,與頁面文件的存儲編碼格式有關。下面簡單介紹幾種常用的字符編碼。
一、ANSI字符集中的ASCII編碼
最初,Internet上只有一種字符集,即ANSI的ASCII字符集(American Standard Code for Information Interchange,美國信息交換標準碼),它使用 7 bits 來表示一個字符,總共表示128個字符,后來IBM公司在此基礎上進行了擴展,用 8 bits 來表示一個字符,總共可以表示256個字符,它充分利用了一個字節所能表達的最大信息。
通過 ANSI 字符集派生出許多兼容的字符集,如:GB2312,正式的名稱為MBCS(Multi-Byte Chactacter System,多字節字符系統),通常也稱為ANSI字符集。

二、Unicode字符編碼
由于每種語言都制定了自己的字符集,導致最后存在的各種字符集實在太多,在國際交流中要經常轉換字符集非常不便。因此,產生了Unicode字符編碼(它是國際組織制定的可以容納世界上所有文字和符號的字符編碼方案,Unicode是一個很大的集合,現在的規模可以容納100多萬個符號)。
Unicode是編碼標準,并沒有規定字符的存儲方式。UTF-8、UTF-16、UTF-32都是將Unicode標準中的碼位轉換到具體存儲數據的方案。
Unicode只是一個符號集,它只規定了符號的二進制代碼,卻沒有規定這個二進制代碼應該如何存儲。
比如,漢字“嚴”的unicode是十六進制數4E25,轉換成二進制數足足有15位(100111000100101),也就是說這個符號的表示至少需要2個字節。表示其他更大的符號,可能需要3個字節或者4個字節,甚至更多。
這里就有兩個嚴重的問題,第一個問題是,如何才能區別unicode和ascii?計算機怎么知道三個字節表示一個符號,而不是分別表示三個符號 呢?第二個問題是,我們已經知道,英文字母只用一個字節表示就夠了,如果unicode統一規定,每個符號用三個或四個字節表示,那么每個英文字母前都必然有二到三個字節是0,這對于存儲來說是極大的浪費,文本文件的大小會因此大出二三倍,這是無法接受的。
三、UTF-8存儲編碼方式
互聯網的普及,強烈要求出現一種統一的編碼方式。UTF-8就是在互聯網上使用最廣的一種unicode的實現方式。其他實現方式還包括UTF-16和UTF-32,不過在互聯網上基本不用。重復一遍,這里的關系是,UTF-8是Unicode的實現方式之一。
UTF-8最大的一個特點,就是它是一種變長的編碼方式。它可以使用1~4個字節表示一個符號,根據不同的符號而變化字節長度。
UTF-8的編碼規則很簡單,只有二條:
1、對于單字節的符號,字節的第一位設為0,后面7位為這個符號的unicode碼。因此對于英語字母,UTF-8編碼和ASCII碼是相同的。
2、對于n字節的符號(n>1),第一個字節的前n位都設為1,第n+1位設為0,后面字節的前兩位一律設為10。剩下的沒有提及的二進制位,全部為這個符號的unicode碼。
四、ASP存儲數據亂碼的解決方案
之所以會出版數據亂碼是因為頁面編碼的混亂所造成的。
1、如果頁面保存時的存儲編碼設置為UTF-8,則必須:
(1)在網頁頭部也指定UTF-8編碼格式,讓瀏覽器使用這種編碼對頁面文檔進行解析

(2)如果是ASP頁面,則必須指定數據傳遞時使用的編碼也是UTF-8(下面代碼必須放在ASP頁面的第一行)

否則的話,通過該頁面所提供的表單數據,存入數據庫時可能會出現亂碼。
2、如果頁面保存時的存儲編碼設置為ANSI,則必須:
(1)在網頁頭部也指定GB2312編碼格式,讓瀏覽器使用這種編碼對頁面文檔進行解析

(2)如果是ASP頁面,則必須指定數據傳遞時使用的編碼也是GB2312(下面代碼必須放在ASP頁面的第一行)

否則的話,通過該頁面所提供的表單數據,存入數據庫時可能會出現亂碼。
五、案例分析
用戶反饋信息表單提交頁面:ly.htm
將用戶反饋信息表單數據存入數據庫頁面:savely.asp
顯示數據庫用戶反饋信息
1、ly.htm頁面的存儲編碼為ANSI,但在ly.htm頁面頭部定義的字符集為 utf-8,導致表單提交的數據存入數據庫時出現亂碼。
(1)ly.htm的存儲編碼格式為UTF-8

(2)ly.htm網頁頭部定義的字符編碼為GB2312

(3)填寫表單數據

(4)數據存入數據庫出現了亂碼

(5)解決方案:
將ly.htm頁面的存儲編碼設置為 utf-8編碼,同時在網頁的頭部定義網頁的編碼為 utf-8,即可解決問題。
將ly.htm頁面的存儲編碼設置為 ansi 編碼,同時在網頁的頭部定義網頁的編碼為 gb2312,也可解決問題。
2、如果ly.htm頁面的編碼設置沒有問題,但如果 savely.asp頁面的編碼出現問題,同樣會使數據存入數據庫出現亂碼。
(1)savely.asp頁面的存儲編碼設置為utf-8,頁面頭部定義的編碼為 utf-8,數據傳遞使用的編碼也是 utf-8()。
(2)savely.asp頁面的存儲編碼設置為ansi,頁面頭部定義的編碼為 gb2312,數據傳遞使用的編碼也是 gb2312()。
總結:
在使用ASP向數據庫存入數據時,要確保頁面文件的存儲編碼、頁面頭部定義的編碼和數據傳遞所使用的編碼一致,否則,數據存入數據庫可能出現亂碼。

網絡營銷詞典內容均由網友提供,僅供參考。

平特心水报图 欢乐斗地主2017老版本 合买大乐透怎么算法 3d所有组六 131期看图找生肖中特 新69棋牌 乒乓球底板 时时彩最快开奖现场 重庆时时彩官方网站 平特肖赔率 北京快乐8和值开奖彩票控