MySQL插入不了中文數(shù)據(jù)問題的原因及解決
目錄
- 前言
- 原因:
- 具體解決方法:
- 創(chuàng)建數(shù)據(jù)庫時(shí)設(shè)置字符集為utf8
- 修改數(shù)據(jù)庫配置文件(比較麻煩)
- 總結(jié)
前言
我們使用MySQL可能會(huì)遇到加入中文報(bào)錯(cuò)的情況,如下。
報(bào)錯(cuò):非法的字符值 放入 ‘name’ 為什么不能存入中文呢?
原因:
對(duì)于當(dāng)前數(shù)據(jù)庫 來說,內(nèi)部存儲(chǔ)中文是需要指定對(duì)應(yīng)的中文編碼方式!
而數(shù)據(jù)庫默認(rèn)的字符集,是“拉丁文”,不能存中文。
我們?cè)诳刂婆_(tái)輸入,下面這行命令,查看數(shù)據(jù)庫字符集。
show variables like "%char%";
我們看 character_set_database 這一行對(duì)應(yīng) Value的是 latinl,而 latinl 是拉丁文,是不支持中文的。
現(xiàn)在我們知道數(shù)據(jù)庫為什么不能存儲(chǔ)中文了,那應(yīng)該怎么做才能讓數(shù)據(jù)庫插入中文呢?我們接著往下看
具體解決方法:
我主要介紹兩種方法,一種簡(jiǎn)單的,一個(gè)比較復(fù)雜,但其本質(zhì)上是在修改 數(shù)據(jù)庫 字符編碼
創(chuàng)建數(shù)據(jù)庫時(shí)設(shè)置字符集為utf8
我們?cè)趧?chuàng)建數(shù)據(jù)庫時(shí)設(shè)置支持中文字符集utf8,如下
create database 數(shù)據(jù)庫名 character set utf8;
設(shè)置完后,我們就能想改數(shù)據(jù)庫中插入中文啦。
我們?cè)俨榭丛摂?shù)據(jù)庫時(shí),我們會(huì)發(fā)現(xiàn)我們?cè)O(shè)置數(shù)據(jù)庫字符集改變了,但是當(dāng)我們使用其他數(shù)據(jù)庫時(shí),其字符集還是 latinl。
這種方法,雖然簡(jiǎn)單但是每次都需要手動(dòng)設(shè)置,那有沒有一種方法能一勞永逸。
我們看方法二。
修改數(shù)據(jù)庫配置文件(比較麻煩)
我們可以修改MySQL的配置文件,把其字符集修改為utf8,這樣再創(chuàng)建數(shù)據(jù)庫就不用手動(dòng)設(shè)置啦。
什么是配置文件:
很多程序,內(nèi)部支持多種“模式”,可以調(diào)整當(dāng)前程序,讓他應(yīng)用那種模式。
因此就可以借助“開關(guān)”來切換模式!軟件的開關(guān)通常會(huì)用一個(gè)“圖形化界面”,但是對(duì)于 MySQL 等
