最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

徹底解決MySQL使用中文亂碼的方法

 更新時間:2022年01月21日 14:58:24   作者:carl-zhao  
本文詳細講解了徹底解決MySQL使用中文亂碼的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

mysql是我們項目中非常常用的數(shù)據(jù)型數(shù)據(jù)庫。但是因為我們需要在數(shù)據(jù)庫保存中文字符,所以經(jīng)常遇到數(shù)據(jù)庫亂碼情況。下面就來介紹一下如何徹底解決數(shù)據(jù)庫中文亂碼情況。

1、中文亂碼

1.1、中文亂碼

 create table user(name varchar(11));    # 創(chuàng)建user表
 insert into table user("carl");         # 添加數(shù)據(jù)
 select * from user;

insert into user value("哈哈");

無法插入中文字符:

1.2、查看表字符編碼

mysql> show create table user \G;
*************************** 1. row ***************************
       Table: user
Create Table: CREATE TABLE `user` (
  `name` varchar(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

我們可以看到表的默認字符集是latin1.

所以我們在創(chuàng)建表的時候就需要指定表的字符集:

 create table user(name varchar(11)) default charset=utf8; 

這樣在Linux里面可以訪問并且可以插入與訪問這個表了。

1.3、數(shù)據(jù)庫與操作系統(tǒng)編碼

雖然在服務(wù)器端可以顯示中文正常,但是在客戶端可能會顯示亂碼。因為我們的服務(wù)器是UTF8。

而且數(shù)據(jù)庫的編碼也存在問題。

這里我們可以看character_sert_database與character_set_server的字符集都是latin1.那么在mysql數(shù)據(jù)庫中,server,database,table的字符集都默認是latin1.下面我們就來看看如何解決mysql亂碼情況。

2、mysql設(shè)置變量的范圍

2.1、session范圍

查看數(shù)據(jù)庫編碼:

show variables like '%char%';

修改字符編碼:

set character_set_server=utf8;
set character_set_database=utf8;
show variables like '%char%';

我們可以看到字符集已經(jīng)修改成都是utf8了。但是這里有一個問題,那就是我們重新打開一個命令窗口然后查看數(shù)據(jù)編碼就會出現(xiàn)下面的畫面:

2.2、global范圍

mysql設(shè)置變量的范圍默認是session范圍。如果設(shè)置多個會話的字符集那么需要設(shè)置global范圍:Set [global|session] variables …

set global character_set_database=utf8;
set global character_set_server=utf8;
show variables like '%char%';

當我們跨會話查看mysql字符集都會看到都是utf8。如果你以為萬事大吉了的話,那么你就大錯特錯了。

2.3、設(shè)置數(shù)據(jù)全局范圍

當我們數(shù)據(jù)庫重啟的時候,你們發(fā)現(xiàn)設(shè)置global范圍的值又變成latin1了。

service mysqld restart
mysql -uroot -pyourpassword
show variables like '%char%';

不要怕,下面就教你終極大招:

修改mysql配置文件/etc/my.cnf。

[mysqld]
character-set-server=utf8 
[client]
default-character-set=utf8 
[mysql]
default-character-set=utf8

請注意這幾個參數(shù)配置的位置,不然可能會啟動不起來mysql服務(wù):

OK。這下如果你重啟mysql服務(wù)也會發(fā)現(xiàn)它的字符集是utf8.

drop database test;
create database test;
use test;
create table user(name varchar(11));
show create table user \G;

而且我們創(chuàng)建表的時候不需要指定字符編碼,它默認就是utf8;

3、總結(jié)

我看網(wǎng)上很多答案都是直接在session級別設(shè)置mysql的字符編碼,這是治標不治本的方法。我們還是要從源頭上解決這個問題。那就是修改mysql默認的配置文件,把它的字符集修改成能夠使用中文字符的UTF8就OK了。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mysql修改字段類型、長度及添加刪除列實例代碼

    Mysql修改字段類型、長度及添加刪除列實例代碼

    在MySQL中可以使用ALTER?TABLE語句來修改表結(jié)構(gòu),包括添加自增屬性,下面這篇文章主要給大家介紹了關(guān)于Mysql修改字段類型、長度及添加刪除列的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • 碰到MySQL無法啟動1067錯誤問題解決方法

    碰到MySQL無法啟動1067錯誤問題解決方法

    創(chuàng)建primay key過程中發(fā)生了斷電,當電腦再次啟動時候,發(fā)現(xiàn)mysql 服務(wù)無法啟動,使用 net start 提示 1067錯誤;后來只能通過手工刪除數(shù)據(jù)文件,日志文件,再啟動服務(wù),然后導入數(shù)據(jù)來完成
    2013-01-01
  • 刪除MySQL數(shù)據(jù)庫的簡單教程

    刪除MySQL數(shù)據(jù)庫的簡單教程

    這篇文章主要介紹了刪除MySQL數(shù)據(jù)庫的簡單教程,是MySQL入門學習中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • mysql安裝圖解總結(jié)

    mysql安裝圖解總結(jié)

    本篇文章給大家總結(jié)了在各種電腦環(huán)境系統(tǒng)下安裝MYSQL的圖解過程,以及遇到問題后的解決辦法。
    2018-06-06
  • 分享MySQL的自動化安裝部署的方法

    分享MySQL的自動化安裝部署的方法

    線上的MySQL一般都采用源碼編譯,雖然MySQL的源碼編譯挺簡單的,但是試想一下,如果你有幾百臺服務(wù)器同時要安裝MySQL,難道你還一臺臺去手動編譯、編寫配置文件嗎?這顯然太低效了,本文討論MySQL的自動化安裝部署。
    2014-07-07
  • MySQL中CURRENT_TIMESTAMP時間戳的使用詳解

    MySQL中CURRENT_TIMESTAMP時間戳的使用詳解

    這篇文章主要給大家介紹了關(guān)于MySQL中CURRENT_TIMESTAMP時間戳的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-03-03
  • mysql模糊匹配多個值的兩種方法實例

    mysql模糊匹配多個值的兩種方法實例

    我們平時使用msyql需要模糊的匹配字段的時候,我們第一反應就是使用like查詢語句來模糊匹配,下面這篇文章主要給大家介紹了關(guān)于mysql模糊匹配多個值的兩種方法,需要的朋友可以參考下
    2022-12-12
  • mysql 5.6.26 winx64安裝配置圖文教程(一)

    mysql 5.6.26 winx64安裝配置圖文教程(一)

    這篇文章主要為大家詳細介紹了mysql 5.6.26 winx64安裝配置圖文教程,感興趣的小伙伴們可以參考一下
    2016-08-08
  • MySQL安裝三種方法總結(jié)(yum安裝、編譯安裝、二進制安裝)

    MySQL安裝三種方法總結(jié)(yum安裝、編譯安裝、二進制安裝)

    MySQL安裝網(wǎng)上的教程有很多,基本上大同小異,但是安裝軟件有時就可能因為一個細節(jié)安裝失敗,這篇文章主要介紹了MySQL安裝三種方法的相關(guān)資料,三種方法分別是yum安裝、編譯安裝以及二進制安裝,需要的朋友可以參考下
    2023-12-12
  • MySQL MEM_ROOT詳解及實例代碼

    MySQL MEM_ROOT詳解及實例代碼

    mysql中使用MEM_ROOT來做內(nèi)存分配的部分,這篇文章會詳細解說MySQL中使用非常廣泛的MEM_ROOT的結(jié)構(gòu)體,同時省去debug部分的信息,僅分析正常情況下。需要的朋友可以參考一下
    2016-11-11

最新評論

慈利县| 琼海市| 黄大仙区| 哈巴河县| 仪征市| 苗栗县| 温州市| 广汉市| 古蔺县| 宜宾县| 滨州市| 定安县| 潜山县| 大方县| 开江县| 莒南县| 沾化县| 繁昌县| 沂南县| 阜新市| 大石桥市| 南乐县| 镇平县| 卢湾区| 舒城县| 赣州市| 淮北市| 延庆县| 皮山县| 台湾省| 博爱县| 论坛| 航空| 洛宁县| 鄄城县| 崇文区| 弥勒县| 丹江口市| 五家渠市| 大新县| 温宿县|