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

MySQL不能顯示中文問題及解決

 更新時(shí)間:2022年05月17日 11:41:03   作者:sxjjxc  
這篇文章主要介紹了MySQL不能顯示中文問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MySQL不顯示中文

問題

無效方法1  

SHOW VARIABLES LIKE ?'%character%'

SET character_set_client = utf8
SET character_set_server = utf8

有效方法2

在創(chuàng)建表時(shí)指定類型

MySQL字符集問題

MySQL的字符集支持(Character Set Support)有兩個(gè)方面:

字符集(Character set)和排序方式(Collation)。

對于字符集的支持細(xì)化到四個(gè)層次:

  • 服務(wù)器(server)
  • 數(shù)據(jù)庫(database)
  • 數(shù)據(jù)表(table)
  • 連接(connection)

1.MySQL默認(rèn)字符集

MySQL對于字符集的指定可以細(xì)化到一個(gè)數(shù)據(jù)庫,一張表,一列,應(yīng)該用什么字符集。

但是,傳統(tǒng)的程序在創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表時(shí)并沒有使用那么復(fù)雜的配置,它們用的是默認(rèn)的配置,那么,默認(rèn)的配置從何而來呢?

  • (1)編譯MySQL 時(shí),指定了一個(gè)默認(rèn)的字符集,這個(gè)字符集是 latin1;
  • (2)安裝MySQL 時(shí),可以在配置文件 (my.ini) 中指定一個(gè)默認(rèn)的的字符集,如果沒指定,這個(gè)值繼承自編譯時(shí)指定的;
  • (3)啟動(dòng)mysqld 時(shí),可以在命令行參數(shù)中指定一個(gè)默認(rèn)的的字符集,如果沒指定,這個(gè)值繼承自配置文件中的配置,此時(shí) character_set_server 被設(shè)定為這個(gè)默認(rèn)的字符集;
  • (4)當(dāng)創(chuàng)建一個(gè)新的數(shù)據(jù)庫時(shí),除非明確指定,這個(gè)數(shù)據(jù)庫的字符集被缺省設(shè)定為character_set_server;
  • (5)當(dāng)選定了一個(gè)數(shù)據(jù)庫時(shí),character_set_database 被設(shè)定為這個(gè)數(shù)據(jù)庫默認(rèn)的字符集;
  • (6)在這個(gè)數(shù)據(jù)庫里創(chuàng)建一張表時(shí),表默認(rèn)的字符集被設(shè)定為 character_set_database,也就是這個(gè)數(shù)據(jù)庫默認(rèn)的字符集;
  • (7)當(dāng)在表內(nèi)設(shè)置一欄時(shí),除非明確指定,否則此欄缺省的字符集就是表默認(rèn)的字符集;

簡單的總結(jié)一下:

如果什么地方都不修改,那么所有的數(shù)據(jù)庫的所有表的所有欄位的都用 latin1 存儲(chǔ),不過我們?nèi)绻惭b MySQL,一般都會(huì)選擇多語言支持,也就是說,安裝程序會(huì)自動(dòng)在配置文件中把 default_character_set 設(shè)置為 UTF-8,這保證了缺省情況下,所有的數(shù)據(jù)庫的所有表的所有欄位的都用 UTF-8 存儲(chǔ)。

2.查看默認(rèn)字符集(默認(rèn)情況下,mysql的字符集是latin1(ISO_8859_1)

通常,查看系統(tǒng)的字符集和排序方式的設(shè)定可以通過下面的兩條命令:

mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+---------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | D:"mysql-5.0.37"share"charsets" |
+--------------------------+---------------------------------+
mysql> SHOW VARIABLES LIKE 'collation_%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+

3.修改默認(rèn)字符集

(1) 最簡單的修改方法,就是修改mysql的my.ini文件中的字符集鍵值

如:

default-character-set = utf8
character_set_server = utf8

修改完后,重啟mysql的服務(wù),service mysql restart

使用

mysql> SHOW VARIABLES LIKE 'character%';

查看,發(fā)現(xiàn)數(shù)據(jù)庫編碼均已改成utf8

+--------------------------+---------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | D:"mysql-5.0.37"share"charsets" |
+--------------------------+---------------------------------+

(2) 還有一種修改字符集的方法,就是使用mysql的命令

mysql> SET character_set_client = utf8 ;
mysql> SET character_set_connection = utf8 ;
mysql> SET character_set_database = utf8 ;
mysql> SET character_set_results = utf8 ;
mysql> SET character_set_server = utf8 ;
mysql> SET collation_connection = utf8 ;
mysql> SET collation_database = utf8 ;
mysql> SET collation_server = utf8 ;

一般就算設(shè)置了表的默認(rèn)字符集為utf8并且通過UTF-8編碼發(fā)送查詢,你會(huì)發(fā)現(xiàn)存入數(shù)據(jù)庫的仍然是亂碼。問題就出在這個(gè)connection連接層上。解決方法是在發(fā)送查詢前執(zhí)行一下下面這句:

SET NAMES 'utf8';

它相當(dāng)于下面的三句指令:

SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;

小結(jié):

因此,使用什么數(shù)據(jù)庫版本,不管是3.x,還是4.0.x還是4.1.x,其實(shí)對我們來說不重要,重要的有二:

1) 正確的設(shè)定數(shù)據(jù)庫編碼.MySQL4.0以下版本的字符集總是默認(rèn)ISO8859-1,MySQL4.1在安裝的時(shí)候會(huì)讓你選擇。如果你準(zhǔn)備使用UTF- 8,那么在創(chuàng)建數(shù)據(jù)庫的時(shí)候就要指定好UTF-8(創(chuàng)建好以后也可以改,4.1以上版本還可以單獨(dú)指定表的字符集)

2) 正確的設(shè)定數(shù)據(jù)庫connection編碼.設(shè)置好數(shù)據(jù)庫的編碼后,在連接數(shù)據(jù)庫時(shí)候,應(yīng)該指定connection的編碼,比如使用jdbc連接時(shí),指定連接為utf8方式。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解mysql 組合查詢

    詳解mysql 組合查詢

    這篇文章主要介紹了詳解mysql 組合查詢的的相關(guān)資料,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-12-12
  • MySQL數(shù)據(jù)庫優(yōu)化技術(shù)之配置技巧總結(jié)

    MySQL數(shù)據(jù)庫優(yōu)化技術(shù)之配置技巧總結(jié)

    這篇文章主要介紹了MySQL數(shù)據(jù)庫優(yōu)化技術(shù)之配置技巧,較為詳細(xì)的總結(jié)分析了MySQL進(jìn)行硬件級軟件優(yōu)化的相關(guān)方法與注意事項(xiàng),需要的朋友可以參考下
    2016-07-07
  • mysql重裝后出現(xiàn)亂碼設(shè)置為utf8可解決

    mysql重裝后出現(xiàn)亂碼設(shè)置為utf8可解決

    mysql重裝后出現(xiàn)亂碼解決辦法:只能在配置文件中將database 和 server 字符集 設(shè)置為utf8 ,否則不起作用,具體如下感興趣的朋友可以參考下哈,希望對大家有所幫助
    2013-07-07
  • MySQL服務(wù)器登陸故障ERROR 1820 (HY000)的解決方法

    MySQL服務(wù)器登陸故障ERROR 1820 (HY000)的解決方法

    這篇文章主要為大家詳細(xì)介紹了MySQL服務(wù)器登陸故障的解決方法,幫助大家解決ERROR 1820 (HY000)錯(cuò)誤,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • CentOS 7下安裝與配置MySQL 5.7

    CentOS 7下安裝與配置MySQL 5.7

    Mysql5.7和之前版本的MySQL有一些不同,現(xiàn)把CentOS 7下MySQL 5.7安裝、配置完整過程記下來,或許對新手來說有用。希望大家能夠喜歡
    2018-01-01
  • MySQL與SQL Server的一些區(qū)別淺析

    MySQL與SQL Server的一些區(qū)別淺析

    這篇文章主要介紹了MySQL與SQL Server的一些區(qū)別淺析,本文羅列了MySQL與SQL Server的25個(gè)不同的地方,并對它們的分頁技術(shù)的不同做了講解,需要的朋友可以參考下
    2014-08-08
  • Mysql保持現(xiàn)有內(nèi)容在后面增加內(nèi)容的sql語句

    Mysql保持現(xiàn)有內(nèi)容在后面增加內(nèi)容的sql語句

    這篇文章主要介紹了Mysql保持現(xiàn)有內(nèi)容在后面增加內(nèi)容的sql語句,需要的朋友可以參考下
    2017-05-05
  • win2003服務(wù)器下配置 MySQL 群集(Cluster)的方法

    win2003服務(wù)器下配置 MySQL 群集(Cluster)的方法

    MySQL 群集是 MySQL 適合于分布式計(jì)算環(huán)境的高可用、高冗余版本。它采用了 NDB Cluster 存儲(chǔ)引擎,允許在 1 個(gè)群集中運(yùn)行多個(gè) MySQL 服務(wù)器。
    2010-12-12
  • MySQL數(shù)據(jù)庫?觸發(fā)器?trigger

    MySQL數(shù)據(jù)庫?觸發(fā)器?trigger

    這篇文章主要介紹了MySQL數(shù)據(jù)庫?觸發(fā)器?trigger,觸發(fā)器是一種特殊類型的存儲(chǔ)過程,觸發(fā)器通過事件進(jìn)行觸發(fā)而被執(zhí)行,可通過數(shù)據(jù)庫中的相關(guān)表實(shí)現(xiàn)級聯(lián)更改,保證數(shù)據(jù)安全,進(jìn)行安全校驗(yàn)
    2022-06-06
  • MySQL Flink Watermark實(shí)現(xiàn)事件時(shí)間處理的關(guān)鍵技術(shù)

    MySQL Flink Watermark實(shí)現(xiàn)事件時(shí)間處理的關(guān)鍵技術(shù)

    Flink Watermark是Flink流處理框架中實(shí)現(xiàn)事件時(shí)間處理的關(guān)鍵技術(shù)之一。它是通過一種機(jī)制來解決數(shù)據(jù)亂序和延遲的問題,使得Flink可以在處理遲到的數(shù)據(jù)時(shí)保證結(jié)果的準(zhǔn)確性。Flink Watermark可以在數(shù)據(jù)流中插入一個(gè)時(shí)間戳,將數(shù)據(jù)流轉(zhuǎn)化為具有時(shí)間維度的數(shù)據(jù)集合
    2023-05-05

最新評論