在你php代碼中執(zhí)行sql查詢之前,添加一句mysql_query("SET NAMES 'gb2312'");
創(chuàng)新互聯(lián)是專業(yè)的山城網(wǎng)站建設(shè)公司,山城接單;提供網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行山城網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
試試看。其中g(shù)b2312是你為數(shù)據(jù)庫設(shè)置的文字編碼,如果你設(shè)置為utf8,那么這里也相應(yīng)改為‘utf8’。
utf8Web頁面:
查詢之前執(zhí)行一下:
set character set 'utf8' 語句(SQL)
同樣寫入數(shù)據(jù)執(zhí)行一下:
set names 'utf8'
如果你是用的客戶端直接查詢mysql,可將上面的utf8改為gbk試試
Mysql數(shù)據(jù)庫不能插入中文,一插入就報(bào)錯,是代碼輸入錯誤造成的,解決方法如下:
1、首先使用insert語句,把數(shù)據(jù)插入到數(shù)據(jù)庫表里。
2、運(yùn)行后,發(fā)現(xiàn)插入語句報(bào)錯了。點(diǎn)擊語句,查看詳情,提示說插入的中文語句是不正確的字符串內(nèi)容。
3、這時右鍵點(diǎn)擊插入數(shù)據(jù)的表,然后點(diǎn)擊表設(shè)計(jì)。
4、打開表設(shè)計(jì)界面后,點(diǎn)擊上方的Option選項(xiàng)。
5、默認(rèn)新建的表字符集用的是latin1字符集。要插入中文內(nèi)容,需要將其改成ubf8字符集。
6、除此之外,需要保存中文內(nèi)容的字段,也需要將其改成utf8字符集。
7、修改好,保存后,再次運(yùn)行插入sql語句,可以看到成功插入中文數(shù)據(jù)了。
一個漢字占多少長度與編碼有關(guān):
若采用UTF-8編碼,則一個漢字=3個字節(jié)。
若采用GBK編碼,則一個漢字=2個字節(jié)。
項(xiàng)目中oracle10g數(shù)據(jù)庫表字段為varchar(n)類型,存英文很簡單,只要字母個數(shù)不大于n即可。但是對于漢字,按照同樣的方法就不行了。因?yàn)閷τ跐h字不同的字符集,在數(shù)據(jù)庫占用的字節(jié)是不一樣的。
比如varchar(10)類型的字段,UTF-8的漢字,只能存3個,gbk字符集的漢字卻能存5個。所以在程序中根據(jù)表字段varchar的大小,保存或更新時作出必要的校驗(yàn)否則后臺會報(bào)錯。
對于一個網(wǎng)站、論壇來說,如果英文字符較多,則建議使用UTF-8節(jié)省空間。不過現(xiàn)在很多論壇的插件一般只支持GBK。
GB2312是GBK的子集,GBK是GB18030的子集
GBK是包括中日韓字符的大字符集合
擴(kuò)展資料
字符最終是以二進(jìn)制形式存儲在磁盤的,這也是為什么要有字符編碼的原因,因?yàn)橛?jì)算機(jī)最終都要以二進(jìn)制形式存儲,那么編碼規(guī)則就是用什么樣的二進(jìn)制來代表這個字符。
例如,ASCII碼表中,01000011這個二進(jìn)制對應(yīng)的十進(jìn)制是67,它代表的就是英語字母C。準(zhǔn)確概述來說,字符編碼方式是用一個或多個字節(jié)的二進(jìn)制形式表示字符集中的一個字符。
每種字符集都有自己特有的編碼方式,因此同一個字符,在不同字符集的編碼方式下,可能會產(chǎn)生不同的二進(jìn)制形式。
另外,字符集合只是指定了一個集合中有哪些字符,而字符編碼,是為這個集合中所有字符定義相關(guān)編號,而字符集(注意與字符集合的區(qū)別)是字符和集合與編碼規(guī)則的混合體,這也是有時候編碼方案代表字符集的原因。