欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

為何不要在MySQL中使用UTF-8編碼方式詳解

 更新時(shí)間:2019年06月19日 09:06:03   作者:happyjava  
這篇文章主要給大家介紹了關(guān)于為何不要在MySQL中使用UTF-8編碼方式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

MySQL的UTF-8編碼方式

MySQL 從 4.1 版本開始支持 UTF-8,也就是 2003 年,然而目前流行的UTF-8 標(biāo)準(zhǔn)(RFC 3629)是在此之后規(guī)定的。正因此,才造就了MySQL中的UTF-8與我們?nèi)粘i_發(fā)中的UTF-8不一致,從到導(dǎo)致了些問題。MySQL的UTF-8只支持每個(gè)字符最多三個(gè)字節(jié),而真正的 UTF-8 是每個(gè)字符最多四個(gè)字節(jié)。

問題復(fù)現(xiàn)

有數(shù)據(jù)庫表如下:utf8編碼方式

往數(shù)據(jù)庫存一條記錄:

@Test
public void testInsert() {
 User user = new User();
 user.setUsername("\uD83D\uDE00 ");
 user.setPassword("123456");
 userRepo.save(user);
}

這里只是部分代碼,看不懂沒關(guān)系,這里是給user表插入一條記錄。其中username是\uD83D\uDE00 。

其實(shí)\uD83D\uDE00是一個(gè)emoji表情。

因?yàn)镸ySQL中utf8字符集只支持三字節(jié)UTF-8編碼的Unicode范圍,而emoji字符屬于四字節(jié)編碼部分,所以程序運(yùn)行預(yù)期是會(huì)報(bào)錯(cuò)的。運(yùn)行這段代碼:

與預(yù)期一致,報(bào)錯(cuò)了。

解決問題

雖然MySQL的UTF-8存在缺陷,但是MySQL(包括mariadb)官方卻沒有修復(fù)此bug,而是通過2010年重新發(fā)布的“utf8mb4”來支持真正的 UTF-8。因此想要解決此問題,只能夠?qū)ySQL數(shù)據(jù)庫設(shè)置為utf8mb4字符集才行。

總結(jié)

這個(gè)問題,也是因?yàn)槟炒伪4鏀?shù)據(jù)的時(shí)候保存了一個(gè)emoji表情才發(fā)現(xiàn)的。其實(shí)最早開始用MySQL的時(shí)候,就有發(fā)現(xiàn)一個(gè)utf8mb4了,但是自己卻沒有卻去了解UTF8和UTF8MB4的區(qū)別。通過此次教訓(xùn),以后使用MySQL就老老實(shí)實(shí)的設(shè)置字符集為utf8mb4吧。

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

  • mysql中rpm方式安裝的詳解

    mysql中rpm方式安裝的詳解

    在本文中小編給大家整理了關(guān)于mysql安裝之rpm方式安裝的詳細(xì)步驟以及注意點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-03-03
  • MySQL的索引和復(fù)合索引的實(shí)現(xiàn)

    MySQL的索引和復(fù)合索引的實(shí)現(xiàn)

    在數(shù)據(jù)庫中,索引是一種特殊的數(shù)據(jù)結(jié)構(gòu),它可以幫助我們快速地查詢和檢索數(shù)據(jù),本文主要介紹了MySQL的索引和復(fù)合索引的實(shí)現(xiàn),感興趣的可以了解一下
    2023-11-11
  • windows環(huán)境中mysql忘記root密碼的解決方法詳解

    windows環(huán)境中mysql忘記root密碼的解決方法詳解

    本篇文章是對(duì)windows環(huán)境中mysql忘記root密碼的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL刪除外鍵、增加外鍵以及刪除主鍵、增加主鍵的實(shí)戰(zhàn)步驟

    MySQL刪除外鍵、增加外鍵以及刪除主鍵、增加主鍵的實(shí)戰(zhàn)步驟

    在Mysql中使用外鍵,可以有效地將多個(gè)表格的數(shù)據(jù)"聯(lián)動(dòng)"起來,打破獨(dú)立狀態(tài),互相影響,下面這篇文章主要給大家介紹了關(guān)于MySQL刪除外鍵、增加外鍵以及刪除主鍵、增加主鍵的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • mysql本地登錄無法使用端口號(hào)登錄的解決方法

    mysql本地登錄無法使用端口號(hào)登錄的解決方法

    這篇文章主要介紹了mysql本地登錄無法使用端口號(hào)登錄的解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06
  • 允許遠(yuǎn)程訪問MySQL的實(shí)現(xiàn)方式

    允許遠(yuǎn)程訪問MySQL的實(shí)現(xiàn)方式

    這篇文章主要介紹了允許遠(yuǎn)程訪問MySQL的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 超詳細(xì)卸載mysql教程(按照步驟可完全卸載)

    超詳細(xì)卸載mysql教程(按照步驟可完全卸載)

    這mysql和vmware一樣不卸載干凈問題是真的多,搞得有些朋友都想重裝系統(tǒng)了,沒事我來說一下mysql如何卸載干凈,下面這篇文章主要給大家介紹了關(guān)于超詳細(xì)卸載mysql的教程,只要按照步驟可完全卸載,需要的朋友可以參考下
    2023-03-03
  • mysql解壓包的安裝基礎(chǔ)教程

    mysql解壓包的安裝基礎(chǔ)教程

    這篇文章主要為大家詳細(xì)介紹了mysql解壓包的安裝基礎(chǔ)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 最新評(píng)論