utf8編碼可以支持一到4字節(jié)的字符編碼,在mysql用我們一般使用utf8編碼來(lái)處理字符類(lèi)型,通常情況下都沒(méi)有問(wèn)題,但遇到4字節(jié)編碼的字符,在數(shù)據(jù)存取的時(shí)候就會(huì)有問(wèn)題了。

成都一家集口碑和實(shí)力的網(wǎng)站建設(shè)服務(wù)商,擁有專(zhuān)業(yè)的企業(yè)建站團(tuán)隊(duì)和靠譜的建站技術(shù),十年企業(yè)及個(gè)人網(wǎng)站建設(shè)經(jīng)驗(yàn) ,為成都上1000+客戶(hù)提供網(wǎng)頁(yè)設(shè)計(jì)制作,網(wǎng)站開(kāi)發(fā),企業(yè)網(wǎng)站制作建設(shè)等服務(wù),包括成都營(yíng)銷(xiāo)型網(wǎng)站建設(shè),品牌網(wǎng)站制作,同時(shí)也為不同行業(yè)的客戶(hù)提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)的服務(wù),包括成都電商型網(wǎng)站制作建設(shè),裝修行業(yè)網(wǎng)站制作建設(shè),傳統(tǒng)機(jī)械行業(yè)網(wǎng)站建設(shè),傳統(tǒng)農(nóng)業(yè)行業(yè)網(wǎng)站制作建設(shè)。在成都做網(wǎng)站,選網(wǎng)站制作建設(shè)服務(wù)商就選成都創(chuàng)新互聯(lián)公司。
通常我們可能會(huì)得到一個(gè)錯(cuò)誤或者警告:Incorrect string value: '/xF0/x9D/x8C/x86' for column ...
Mysql 從5.5.3版本開(kāi)始支持4字節(jié)的utf8編碼,如果你的Mysql數(shù)據(jù)庫(kù)是5.5.3+,按照以下步驟就能解決這個(gè)問(wèn)題,如果版本低于5.5.3,是不是可以考慮升級(jí)數(shù)據(jù)庫(kù)版本呢?
1、在修改數(shù)據(jù)庫(kù)編碼前先對(duì)數(shù)據(jù)庫(kù)備份(雖然utf8mb4兼容utf8,但有備無(wú)患)
2、修改數(shù)據(jù)庫(kù)的編碼、表的編碼、列的編碼為utf8mb4
3、在Mysql數(shù)據(jù)庫(kù)配置文件(my.ini)中加入如下設(shè)置
[client]default-character-set = utf8mb4[mysql]default-character-set = utf8mb4[mysqld]character-set-client-handshake = FALSEcharacter-set-server = utf8mb4collation-server = utf8mb4_unicode_ci
重新啟動(dòng)Mysql數(shù)據(jù)庫(kù),確認(rèn)設(shè)置生效
mysql show VARIABLES like '%char%';+--------------------------+----------------------------------------+| Variable_name | Value |+--------------------------+----------------------------------------+| character_set_client | utf8 || character_set_connection | utf8 || character_set_database | utf8mb4 || character_set_filesystem | binary || character_set_results | utf8 || character_set_server | utf8mb4 || character_set_system | utf8 || character_sets_dir | /home/app/mysql-5.5.33/share/charsets/ |+--------------------------+----------------------------------------+8 rows in set
4、在獲取數(shù)據(jù)庫(kù)連接的時(shí)候執(zhí)行sql:set names utf8mb4;我使用的是alibaba的開(kāi)源數(shù)據(jù)庫(kù)連接池程序,在配置文件中增加一行如下配置
property name="connectionInitSqls" value="set names utf8mb4;" /
重新啟動(dòng)應(yīng)用程序,問(wèn)題解決。
在sql中給所有字段值加上mysql_real_escape_string函數(shù)處理,作用就是給特殊字符進(jìn)行轉(zhuǎn)義,具體說(shuō)明網(wǎng)上找
$sql="update `qqaide_ini` set `鍵值`='" . mysql_real_escape_string($keynamearr[$i+1]) . "' WHERE `PCHash`='" . mysql_real_escape_string($PCHash) . "' and `小節(jié)`='" . mysql_real_escape_string($notename) . "' and `鍵名`='" . mysql_real_escape_string($keynamearr[$i]) . "'";
數(shù)據(jù)庫(kù)是latin1也可以存入中文的~創(chuàng)建表字段的時(shí)候,設(shè)置字段字符集為UTF-8(utf8 general)就行了
數(shù)據(jù)存的是表table里面的字段里面,庫(kù)下面有表,表里面有字段,字段存儲(chǔ)你想要存貯的值,你要將字符串存在數(shù)據(jù)庫(kù),要知道需要什么表,有什么字段,然后插入數(shù)據(jù)就好了
1.
blob是二進(jìn)制大對(duì)象,可以容納可變量數(shù)量的數(shù)據(jù),其中blob分為4中類(lèi)型:TINYBLOB,BLOB,mediumblob和LongBlob,他們?nèi)菁{的長(zhǎng)度是不同的.
Text同樣也分為四種類(lèi)型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT
2.
blob被視為二進(jìn)制字符串,Text被視為非二進(jìn)制字符串;
blob列沒(méi)有字符集,并且排序和比較基于列值字節(jié)的數(shù)值值。
TEXT列有一個(gè)字符集,并且根據(jù)字符集的校對(duì)規(guī)則對(duì)值進(jìn)行排序和比較。
在MySQL TEXT或BLOB列的存儲(chǔ)或檢索過(guò)程中,不存在大小寫(xiě)轉(zhuǎn)換,當(dāng)未運(yùn)行在嚴(yán)格模式時(shí),如果你為BLOB或TEXT列分配一個(gè)超過(guò)該列類(lèi)型的最大長(zhǎng)度的值值,值被截取以保證適合。如果截掉的字符不是空格,將會(huì)產(chǎn)生一條警告。
使用嚴(yán)格SQL模式,會(huì)產(chǎn)生錯(cuò)誤,并且值將被拒絕而不是截取并給出警告.在大多數(shù)方面,可以將BLOB列視為能夠足夠大的VARBINARY列。同樣,可以將TEXT列視為VARCHAR列。
3.
BLOB和TEXT在以下幾個(gè)方面不同于VARBINARY和VARCHAR.
BLOB和TEXT列不能有默認(rèn)值.
當(dāng)保存或檢索BLOB和TEXT列的值時(shí)不刪除尾部空格。(這與VARBINARY和VARCHAR列相同).
對(duì)于BLOB和TEXT列的索引,必須指定索引前綴的長(zhǎng)度。對(duì)于CHAR和VARCHAR,前綴長(zhǎng)度是可選的.
LONG和LONG VARCHAR對(duì)應(yīng)MEDIUMTEXT數(shù)據(jù)類(lèi)型。這是為了保證兼容性。如果TEXT列類(lèi)型使用BINARY屬性,將為列分配列字符集的二元校對(duì)規(guī)則.
MySQL連接程序/ODBC將BLOB值定義為L(zhǎng)ONGVARBINARY,將MySQL TEXT值定義為L(zhǎng)ONGVARCHAR。由于BLOB和TEXT值可能會(huì)非常長(zhǎng),使用它們時(shí)可能遇到一些約束.
BLOB或TEXT對(duì)象的最大大小由其類(lèi)型確定,但在客戶(hù)端和服務(wù)器之間實(shí)際可以傳遞的最大值由可用內(nèi)存數(shù)量和通信緩存區(qū)大小確定。你可以通過(guò)更改 max_allowed_packet變量的值更改消息緩存區(qū)的大小,但必須同時(shí)修改服務(wù)器和客戶(hù)端程序。例如,可以使用 MySQL和MySQLdump來(lái)更改客戶(hù)端的max_allowed_packet值.
utf8編碼可以支持一到4字節(jié)的字符編碼,在mysql用我們一般使用utf8編碼來(lái)處理字符類(lèi)型,通常情況下都沒(méi)有問(wèn)題,但遇到4字節(jié)編碼的字符,在數(shù)據(jù)存取的時(shí)候就會(huì)有問(wèn)題了。\x0d\x0a通常我們可能會(huì)得到一個(gè)錯(cuò)誤或者警告:Incorrect string value: '/xF0/x9D/x8C/x86' for column ...\x0d\x0aMysql 從5.5.3版本開(kāi)始支持4字節(jié)的utf8編碼,如果你的Mysql數(shù)據(jù)庫(kù)是5.5.3+,按照以下步驟就能解決這個(gè)問(wèn)題,如果版本低于5.5.3,是不是可以考慮升級(jí)數(shù)據(jù)庫(kù)版本呢?\x0d\x0a1、在修改數(shù)據(jù)庫(kù)編碼前先對(duì)數(shù)據(jù)庫(kù)備份(雖然utf8mb4兼容utf8,但有備無(wú)患)\x0d\x0a2、修改數(shù)據(jù)庫(kù)的編碼、表的編碼、列的編碼為utf8mb4\x0d\x0a3、在Mysql數(shù)據(jù)庫(kù)配置文件(my.ini)中加入如下設(shè)置\x0d\x0a\x0d\x0a[client]default-character-set = utf8mb4[mysql]default-character-set = utf8mb4[mysqld]character-set-client-handshake = FALSEcharacter-set-server = utf8mb4collation-server = utf8mb4_unicode_ci\x0d\x0a\x0d\x0a重新啟動(dòng)Mysql數(shù)據(jù)庫(kù),確認(rèn)設(shè)置生效\x0d\x0a\x0d\x0amysql show VARIABLES like '%char%';+--------------------------+----------------------------------------+| Variable_name | Value |+--------------------------+----------------------------------------+| character_set_client | utf8 || character_set_connection | utf8 || character_set_database | utf8mb4 || character_set_filesystem | binary || character_set_results | utf8 || character_set_server | utf8mb4 || character_set_system | utf8 || character_sets_dir | /home/app/mysql-5.5.33/share/charsets/ |+--------------------------+----------------------------------------+8 rows in set\x0d\x0a\x0d\x0a4、在獲取數(shù)據(jù)庫(kù)連接的時(shí)候執(zhí)行sql:set names utf8mb4;我使用的是alibaba的開(kāi)源數(shù)據(jù)庫(kù)連接池程序,在配置文件中增加一行如下配置\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a重新啟動(dòng)應(yīng)用程序,問(wèn)題解決
當(dāng)前文章:mysql怎么存字符,mysql怎么輸出文字
鏈接地址:http://www.js-pz168.com/article22/hshpjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、網(wǎng)站改版、企業(yè)網(wǎng)站制作、網(wǎng)站內(nèi)鏈、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容