MySQL字符集utf8修改為utf8mb4的方法步驟
對(duì)于mysql 5.5 而言,如果不設(shè)定字符集,mysql默認(rèn)的字符集是 latin1 拉丁文字符集;
但隨著各種業(yè)務(wù)的進(jìn)一步發(fā)展,除了各個(gè)國(guó)家的本身語(yǔ)言字符,經(jīng)常也會(huì)有一些表情符號(hào)出現(xiàn)在應(yīng)用程序中,而在mysql 5.5 之前,UTF-8編碼只支持1-3個(gè)字節(jié),支持BMP這部分的Unicode編碼區(qū);從MySQL 5.5開(kāi)始,可以支持4個(gè)字節(jié)UTF編碼 utf8mb4 ,一個(gè)字符能夠支持更多的字符集,也能夠支持更多表情符號(hào)。
utf8mb4兼容utf8,且比utf8能表示更多的字符,是utf8字符集的超集。所以現(xiàn)在一些新的業(yè)務(wù),比如ISO等,會(huì)將MySQL數(shù)據(jù)庫(kù)的字符集設(shè)置為utf8mb4。
今天在處理一個(gè)應(yīng)用需求的時(shí)候,就遇到這樣一個(gè)問(wèn)題:
當(dāng)然調(diào)整的最好方法是客戶端,mysql數(shù)據(jù)庫(kù)的字符集都修改為utf8mb4,但這樣修改量比較大,而且如果客戶端一部分修改為utf8,一部分為utf8mb4的話,容易發(fā)生混亂。
經(jīng)過(guò)幾次測(cè)試后,MySQL數(shù)據(jù)庫(kù)的my.cnf中關(guān)于字符集的配置修改為下面的配置了:
[client] default-character-set=utf8mb4 [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4' skip-character-set-client-handshake = true [mysql] default-character-set = utf8mb4
使用MySQL字符集時(shí)的建議
• 建立數(shù)據(jù)庫(kù)/表和進(jìn)行數(shù)據(jù)庫(kù)操作時(shí)盡量顯式指出使用的字符集,而不是依賴于MySQL的默認(rèn)設(shè)置,否則MySQL升級(jí)時(shí)可能帶來(lái)很大困擾;
• 數(shù)據(jù)庫(kù)和連接字符集都使用latin1時(shí)雖然大部分情況下都可以解決亂碼問(wèn)題,但缺點(diǎn)是無(wú)法以字符為單位來(lái)進(jìn)行SQL操作,一般情況下將數(shù)據(jù)庫(kù)和連接字符集都置為utf8是較好的選擇;
• 使用mysql C API時(shí),初始化數(shù)據(jù)庫(kù)句柄后馬上用mysql_options設(shè)定MYSQL_SET_CHARSET_NAME屬性為utf8,這樣就不用顯式地用 SET NAMES語(yǔ)句指定連接字符集,且用mysql_ping重連斷開(kāi)的長(zhǎng)連接時(shí)也會(huì)把連接字符集重置為utf8;
• 對(duì)于mysql PHP API,一般頁(yè)面級(jí)的PHP程序總運(yùn)行時(shí)間較短,在連接到數(shù)據(jù)庫(kù)以后顯式用SET NAMES語(yǔ)句設(shè)置一次連接字符集即可;但當(dāng)使用長(zhǎng)連接時(shí),請(qǐng)注意保持連接通暢并在斷開(kāi)重連后用SET NAMES語(yǔ)句顯式重置連接字符集。
全面了解mysql中utf8和utf8mb4的區(qū)別:http://www.dhdzp.com/article/90037.htm
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
解決Mysql建表時(shí)報(bào)錯(cuò)invalid?ON?UPDATE?clause?for?'create_d
這篇文章主要介紹了解決Mysql建表時(shí)報(bào)錯(cuò)invalid?ON?UPDATE?clause?for?'create_date'?column問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
MySQL與PHP的基礎(chǔ)與應(yīng)用專題之?dāng)?shù)據(jù)查詢
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL?AB?公司開(kāi)發(fā),屬于?Oracle?旗下產(chǎn)品。MySQL?是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,本系列將帶你掌握php與mysql的基礎(chǔ)應(yīng)用,本篇從數(shù)據(jù)的查詢開(kāi)始2022-02-02
mysql插入帶emoji表情的數(shù)據(jù)報(bào)錯(cuò)問(wèn)題
在處理MySQL數(shù)據(jù)庫(kù)插入表情時(shí)出現(xiàn)錯(cuò)誤,主要可能是由三個(gè)因素引起的:1、數(shù)據(jù)庫(kù)版本號(hào)是否大于5.5.3;2、數(shù)據(jù)庫(kù)表及字段的字符集是否為utf8mb4;3、項(xiàng)目中MySQL驅(qū)動(dòng)的版本是否大于5.1.13,本文詳細(xì)講解了如何針對(duì)這三個(gè)關(guān)鍵點(diǎn)進(jìn)行排查和解決2024-11-11
MySQL中的常用樹(shù)形結(jié)構(gòu)設(shè)計(jì)總結(jié)
這篇文章主要介紹了MySQL中的常用樹(shù)形結(jié)構(gòu)設(shè)計(jì)總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
解決Java程序使用MySQL時(shí)返回參數(shù)為亂碼的示例教程
這篇文章主要介紹了解決Java程序使用MySQL返回參數(shù)為亂碼的問(wèn)題的教程,通過(guò)示例來(lái)講解utf-8編碼在MySQL中的相關(guān)配置,示例需要的朋友可以參考下2015-12-12

