亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        MySQL數(shù)據(jù)庫字符集的問題研究

        2020-02-04 07:12:44石麗怡
        電子技術(shù)與軟件工程 2020年12期
        關(guān)鍵詞:字符集亂碼數(shù)據(jù)表

        石麗怡

        (海南政法職業(yè)學(xué)院 海南省??谑?571100)

        MySQL 數(shù)據(jù)庫是瑞典MySQL AB 公司開發(fā)的一個(gè)小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。目前被廣泛地應(yīng)用在Internet 加上的中小型網(wǎng)站。MySQL 數(shù)據(jù)庫是開源數(shù)據(jù)庫。開源數(shù)據(jù)庫的特點(diǎn)是速度快、易用性好、支持SQL、對網(wǎng)絡(luò)支持性好、可移植性好、費(fèi)用低等。這些特點(diǎn)使得MySQL 成為“最受歡迎的開源數(shù)據(jù)庫”。在2020年4月份的DB-Engines 數(shù)據(jù)庫流行度排行榜[1]中My SQL 排名中排名第2 位。

        1 MySQL字符集概述

        字符集是指一種從二進(jìn)制編碼到某類字符符號的映射,校對是指一組用于某個(gè)字符集的排序規(guī)則。并且每一類編碼字符都有其對應(yīng)的字符集和校對規(guī)則。

        只要涉及到中文的地方,就會存在字符集和編碼方式,MySQL可以支持很多種字符集,在同一臺服務(wù)器,同一個(gè)數(shù)據(jù)庫,甚至同一個(gè)表的不同字段都可以指定使用不同的字符集。相比其他數(shù)據(jù)庫管理系統(tǒng),MySQL 要更加靈活些。正是因?yàn)镸ySQL 的字符集的靈活性,也體現(xiàn)了MySQL 的字符集負(fù)責(zé)性和繁瑣性,使得我們在實(shí)際得應(yīng)用過程中,經(jīng)常出現(xiàn)MySQL 數(shù)據(jù)庫中的文字不能正常顯示,會出現(xiàn)亂碼等情況。

        2 支持中文的字符集

        支持中文的字符集主流有三種:UTF-8 字符集、GBK 字符集和GB2312 字符集。

        2.1 UTF-8字符集

        是一種多字節(jié)的國際編碼,通用性強(qiáng),它包含全世界所有國家需要用到的字符,英文用1 個(gè)字節(jié)(即8 位二進(jìn)制),中文使用3個(gè)字節(jié)(24 位)來進(jìn)行編碼, 其編碼的文字可以在各國支持utf-8字符集的瀏覽器上顯示。例如在utf-8 編碼下,英文的IE 也能顯示中文,無需再額外下載支持包。

        2.2 GBK字符集

        GBK 是國家標(biāo)準(zhǔn)編碼,通用性比較差,是GB2312 的擴(kuò)展字符集,其文字編碼不論中文還是英文均采用雙字節(jié)表示,只對中文有區(qū)分,GBK 包含全部的中文字符。

        2.3 GB2312字符集

        GB2312 全稱是“信息交換用漢字編碼字符集”,由中華人民共和國國家標(biāo)準(zhǔn)總局于1980年發(fā)布,1981年5月1日起實(shí)施,是漢字字符集編碼,是最基本的漢字編碼集。它共有、收錄了7445個(gè)字節(jié),其中簡化漢字6763 個(gè),字母和符號682 個(gè)。只支持簡體中文。

        2.4 字符集的選擇

        這三中字符集都可以顯示中文字符,用于GB 是國標(biāo)的意思,GB2312 和GBK 主要用于漢字的編碼,而utf-8 是全世界通用的。GBK 和UTF-8 功能一樣,但是編碼方式不一樣,GBK 的中文和英文編碼是雙字節(jié),而UTF-8 是多字節(jié)編碼,英文使用1 個(gè)字節(jié),中文使用3 個(gè)字節(jié)來編碼,所以,對于英文較多的網(wǎng)站則用UTF-8節(jié)省空間。如果開發(fā)的網(wǎng)站是不對外開放的中文網(wǎng)站,那么使用GB2312 和GBK 就夠了,如果開發(fā)的網(wǎng)站是全球通用就要設(shè)置稱UTF-8

        3 MySQL數(shù)據(jù)庫的字符集問題

        在使用MySQL 數(shù)據(jù)庫時(shí),總結(jié)了以下幾種,MySQL 中出現(xiàn)中文亂碼的問題:①數(shù)據(jù)庫中的中文字符,亂碼顯示。②web 頁面顯示數(shù)據(jù)庫中文字符時(shí)出現(xiàn)亂碼。③不能儲存時(shí)下比較流行的emoji 表情。

        分析產(chǎn)生亂碼原因:

        (1)要了解MySQL 中字符集相關(guān)變量,首先了解其含義:

        如表1 所示,默認(rèn)的字符集可在3 個(gè)級別進(jìn)行定義,分別是數(shù)據(jù)庫服務(wù)器(database sever)級別,數(shù)據(jù)庫(database)級別,數(shù)據(jù)表(table)級別以及字段(column)級。數(shù)據(jù)庫服務(wù)器(database sever)級別是在數(shù)據(jù)庫系統(tǒng)的配置文件my.ini(windows)或my.cnf(linux)上進(jìn)行修改??砂匆韵虏襟E查詢配置文件my.ini 的位置:

        ①命令:select @@dasedir 查詢MySQL 在本機(jī)中的安裝目錄。

        ②命令:select @@datadir 查詢my.ini 所在的位置。

        (2)了解完整的字符集流轉(zhuǎn)過程:

        ①mysql 服務(wù)器收到客戶端發(fā)送過來的請求時(shí),從 character_set_client 轉(zhuǎn)換為character_set_connection。

        ②進(jìn)行內(nèi)部操作前將請求數(shù)據(jù)從character_set_connection轉(zhuǎn)換為內(nèi)部操作字符集,方法如下:使用每個(gè)字段coulumn的CHARACTER SET 設(shè)定值;若未設(shè)置字段coulumn 的CHARACTER SET,則使用對應(yīng)數(shù)據(jù)表的default_character_set 設(shè)定值;若Column、Table 均未設(shè)置Charater SET,則使用對應(yīng)數(shù)據(jù)庫的DEFAULT CHARACTER SET 設(shè)定值;如Column、Table、Database 均未設(shè)地Charater SET,則使用服務(wù)器的character_set_server 設(shè)定值。

        ③最后將操作結(jié)果從內(nèi)部操作字符集轉(zhuǎn)換為character_set_results。

        4 針對以上問題的解決方法

        4.1 數(shù)據(jù)庫中的中文字符,亂碼顯示

        (1)假設(shè)在安裝MySQL 數(shù)據(jù)庫是默認(rèn)安裝,那服務(wù)器默認(rèn)的字符集一般是latin1。在建庫和建表時(shí)如果沒有指定其他的字符集,那么數(shù)據(jù)庫則沿用服務(wù)器默認(rèn)的字符集latin1。latin1 字符集不能顯示中文字符,會提示如下所示錯(cuò)誤。

        表1

        表2

        解決方法:將數(shù)據(jù)庫字符集修改為utf8 或者GBK 即可。

        命令:alter database tty character set ‘utf8’;

        (2)還有一種情況就是sever 為utf8,但是column 為latin1,也會提示錯(cuò)誤。

        解決方法:將數(shù)據(jù)表字符集修改為utf8 或者GBK。

        命令:alter table yyyu convert to character set ‘utf8’.

        4.2 Web頁面顯示數(shù)據(jù)庫中文字符時(shí)出現(xiàn)亂碼

        (1)假設(shè)客戶端向MySQL 服務(wù)器發(fā)送了一組UTF-8 命令,而的此時(shí)服務(wù)器端字符集假設(shè)是latin1,即Character_set_client 為Latin1,那么存儲到數(shù)據(jù)庫中的文字信息就會變成亂碼。

        (2)假設(shè)服務(wù)器端向客戶端發(fā)送了latin1 編碼數(shù)據(jù),但是客戶端的編碼形式為UTF-8,那么現(xiàn)實(shí)在web 頁面上的中文信息也是亂碼。

        以上兩種情況如表2 所示。

        解決方法:將服務(wù)器端的Character_set_connection、Character_set_client、Character_set_results 三個(gè)系統(tǒng)變量的值設(shè)置為web 客戶端的字符集utf-8 即可解決亂碼問題。一可采用相關(guān)命令進(jìn)行更改,最直接的方法是找到配置文件my.ini 進(jìn)行如下修改:

        4.3 不能存儲emoji表情

        Emoji 是時(shí)下比較流行的表情符號,也數(shù)據(jù)一種數(shù)據(jù)。可保存在MySQL 數(shù)據(jù)庫中,在存儲時(shí)若操作不當(dāng)會出現(xiàn)incorrect string value 這個(gè)錯(cuò)誤。這是因?yàn)閑moji 表情是4 個(gè)字節(jié)的,而大家普遍認(rèn)為utf-8 就是萬能的字符集了,在筆者遇到這個(gè)問題時(shí)也是一直這么認(rèn)為的,直到遇到emoji 表情。很明顯3 個(gè)字節(jié)的utf-8 不能容納4 個(gè)字節(jié)的emoji 表情。這個(gè)時(shí)候MySQL 數(shù)據(jù)庫為了解決這個(gè)問題,在5.3 版本之后新增了一個(gè)utf-8 字符集編碼utf8mb4 編碼,之前編碼一直是utf8 編碼,utf8mb4 是utf8 的超級,占4 個(gè)字節(jié),能夠向下兼容utf8。

        解決方法:

        (1)修改三級編碼。

        ①修改數(shù)據(jù)庫編碼:ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

        ②修改數(shù)據(jù)表編碼:ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

        ③修改表字段編碼:ALTER TABLE table_name CHANGE column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

        (2)修改my.ini 配置文件。

        MySQL 作為全世界最受歡迎的開源數(shù)據(jù)庫平臺,擁有越來越多的編程愛好者,在中文環(huán)境下編程的用戶越來多,而使用過程中出現(xiàn)亂碼或者數(shù)據(jù)不能存儲的問題進(jìn)行了研究,經(jīng)過反復(fù)操作實(shí)驗(yàn),提出了具體的解決方案。

        猜你喜歡
        字符集亂碼數(shù)據(jù)表
        湖北省新冠肺炎疫情數(shù)據(jù)表
        黨員生活(2020年2期)2020-04-17 09:56:30
        這些真的不是亂碼,是漢字
        ORACLE字符集問題的分析
        基于列控工程數(shù)據(jù)表建立線路拓?fù)潢P(guān)系的研究
        ORACLE數(shù)據(jù)庫字符集問題及解決方法
        醫(yī)院信息系統(tǒng)Oracle數(shù)據(jù)庫中導(dǎo)入數(shù)據(jù)中文亂碼的解決技術(shù)
        .Net框架聯(lián)合Oracle字符集問題研究
        炫邁:用神奇亂碼勾引你視線
        圖表
        基于VSL的動(dòng)態(tài)數(shù)據(jù)表應(yīng)用研究
        河南科技(2014年24期)2014-02-27 14:19:25
        国产亚洲人成在线观看| 久久亚洲日本免费高清一区 | 国产免费人成网站在线播放| 亚洲国产中文字幕精品| 综合色区亚洲熟妇另类| 久久久久亚洲av无码尤物| 美女被射视频在线观看91| 久久精品女同亚洲女同| 国产色xx群视频射精| 亚洲AV日韩AV永久无码电影| 麻豆av一区二区天堂| 精品国产一区二区三区av麻| 国产成人精品午夜视频| 久久国产精品二区99| 在线看不卡的国产视频| 黄片视频免费观看蜜桃| 亚洲av成人中文无码专区| 亚洲中文av一区二区三区| 精品少妇一区二区三区四区| 日韩在线 | 中文| 国产精品美女一区二区三区| 国产亚洲精品hd网站| 精品国产亚洲一区二区三区四区| 日本做受120秒免费视频| 国产美女网站视频| 久久久精品国产亚洲av网| 情爱偷拍视频一区二区 | 日本一区二区在线播放观看| 国产午夜亚洲精品国产成人av| 国产精品欧美一区二区三区| 国产美熟女乱又伦av果冻传媒| 亚洲av日韩av天堂久久不卡| 国产a∨天天免费观看美女| 欧美白人最猛性xxxxx| 成年人视频在线播放视频| 国产农村妇女精品一区| 无码少妇一区二区浪潮av| 亚洲中文一本无码AV在线无码| 亚洲天堂亚洲天堂亚洲色图| 一本一道久久综合久久| 国产亚洲精品国产福利在线观看|