Mysql數(shù)據(jù)庫(kù)亂碼問(wèn)題的對(duì)應(yīng)方式
MySQL中數(shù)據(jù)庫(kù)亂碼一般進(jìn)行字符集的設(shè)定即可,但是亂碼可以出現(xiàn)在各個(gè)階段,所以這篇文章整理一下亂碼出現(xiàn)的各個(gè)階段以及對(duì)應(yīng)方法。
建庫(kù)/建表時(shí)添加charset設(shè)定
建庫(kù)
CREATE DATABASE 數(shù)據(jù)庫(kù)名稱 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
建表
create table 表名(字段構(gòu)成詳細(xì)列表信息) default charset=utf8;
客戶端顯示
locale
確認(rèn)locale設(shè)定是否為UTF8方式,一般服務(wù)器端沒有問(wèn)題,僅在客戶端存在問(wèn)題?;蛘咭徊糠挚蛻舳擞袉?wèn)題,往往就是客戶端顯示設(shè)定存在問(wèn)題。
確認(rèn)命令:locale
mysql設(shè)定
使用show variables like ‘%character%'進(jìn)行確認(rèn),一般修改character_set_database和character_set_server可以僅在當(dāng)前session修改設(shè)定
使用mysql命令可以進(jìn)行session范圍內(nèi)的字符集設(shè)定
確認(rèn)命令(mysql):show variables like '%character%'
局部設(shè)定
僅在當(dāng)前session起作用,設(shè)定方式為:
set character_set_database=utf8
全局設(shè)定
多個(gè)session起作用的設(shè)定方式為:
set global character_set_database=utf8
當(dāng)然session方式會(huì)再數(shù)據(jù)庫(kù)重啟后失效,需要持久化保存,同樣的設(shè)定要設(shè)定到mysql的配置文件my.cnf中即可.
這樣在創(chuàng)建數(shù)據(jù)庫(kù)或者創(chuàng)建數(shù)據(jù)庫(kù)表的時(shí)候缺省就是指定的utf8了
如果是純粹的顯示問(wèn)題,很多時(shí)候還有可能是由于character_set_results設(shè)定顯示的。
使用show variables like ‘%character%'進(jìn)行確認(rèn),如果設(shè)定不正確,可以使用如下方式解決
set character_set_results='utf8';
數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)出
一般使用mysqldump進(jìn)行數(shù)據(jù)庫(kù)導(dǎo)出會(huì)使用如下命令
mysqldump -u用戶名 -p用戶密碼 數(shù)據(jù)庫(kù)名稱 >mysqlbackup.sql
如果出現(xiàn)亂碼,可以實(shí)現(xiàn)添加如下Option
mysqldump -u用戶名 -p用戶密碼 --default-character-set=utf8 數(shù)據(jù)庫(kù)名稱 >mysqlbackup.sql
如果含有blob類型,則需要使用hex-blob選項(xiàng)進(jìn)行mysqldump導(dǎo)出
mysqldump -u用戶名 -p用戶密碼 --hex-blob 數(shù)據(jù)庫(kù)名稱 >mysqlbackup.sql
數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)入
導(dǎo)入的時(shí)候如果出現(xiàn)問(wèn)題,也可考慮添加字符級(jí)的設(shè)定
mysql -u用戶名 -p用戶密碼 --default-character-set=utf8 數(shù)據(jù)庫(kù)名稱 <mysqlbackup.sql
也可使用如下方式,導(dǎo)入之前執(zhí)行如下命令
set names utf8;
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
- MySQL5.x版本亂碼問(wèn)題解決方案
- 解壓版MYSQL中文亂碼問(wèn)題解決方案
- node使用mysql獲取數(shù)據(jù)庫(kù)數(shù)據(jù)中文亂碼問(wèn)題的解決
- php寫入mysql中文亂碼的實(shí)例解決方法
- MySQL字符集亂碼及解決方案分享
- linux下mysql亂碼問(wèn)題的解決方案
- mysql中插入表數(shù)據(jù)中文亂碼問(wèn)題的解決方法
- 解決Linux下Tomcat向MySQL插入數(shù)據(jù)中文亂碼問(wèn)題
- JDBC連接mysql亂碼異常問(wèn)題處理總結(jié)
- MySQL如何解決DOS窗口亂碼問(wèn)題
相關(guān)文章
MySQL表字段時(shí)間設(shè)置默認(rèn)值
很多人可能會(huì)把日期類型的字段的類型設(shè)置為 date或者 datetime,但是這些不是當(dāng)前時(shí)間,那么如何把字段時(shí)間設(shè)置成當(dāng)前時(shí)間,本文就具體來(lái)介紹一下2021-05-05
MYSQL速度慢的問(wèn)題 記錄數(shù)據(jù)庫(kù)語(yǔ)句
Web程序慢,首先的一個(gè)檢測(cè)對(duì)象就是數(shù)據(jù)庫(kù),寫過(guò)幾年程序的都知道?,F(xiàn)在想追蹤MySQL中那些拖累服務(wù)器性能的SQL語(yǔ)句,怎么辦2012-06-06
MySQL 不用存儲(chǔ)過(guò)程循環(huán)插入數(shù)據(jù)的方法
在MySQL中,使用INSERT INTO VALUES語(yǔ)句可以一次性插入多行數(shù)據(jù),提高插入效率,還可通過(guò)Python的pymysql庫(kù)生成和執(zhí)行插入語(yǔ)句,這不僅減少了操作時(shí)間,還提高了代碼的簡(jiǎn)潔性和執(zhí)行效率2024-09-09
MySQL對(duì)數(shù)據(jù)表已有表進(jìn)行分區(qū)表的實(shí)現(xiàn)
本文主要介紹對(duì)現(xiàn)有的一個(gè)表進(jìn)行創(chuàng)建分區(qū)表,并把數(shù)據(jù)遷移到新表,可以按時(shí)間來(lái)分區(qū),具有一定的參考價(jià)值,感興趣的可以了解一下2021-10-10
MySQL Version確認(rèn)問(wèn)題(版本確認(rèn))
這篇文章主要介紹了MySQL Version確認(rèn)問(wèn)題(版本確認(rèn)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
mysql中decimal數(shù)據(jù)類型小數(shù)位填充問(wèn)題詳解
這篇文章主要介紹了mysql中decimal數(shù)據(jù)類型小數(shù)位填充問(wèn)題詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Mysql中DATEDIFF函數(shù)的基礎(chǔ)語(yǔ)法及練習(xí)案例
Datediff函數(shù),最大的作用就是計(jì)算日期差,能計(jì)算兩個(gè)格式相同的日期之間的差值,下面這篇文章主要給大家介紹了關(guān)于Mysql中DATEDIFF函數(shù)的基礎(chǔ)語(yǔ)法及練習(xí)案例?的相關(guān)資料,需要的朋友可以參考下2022-09-09
MySQL 按指定字段自定義列表排序的實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇MySQL 按指定字段自定義列表排序的實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03

