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