skip-character-set-client-handshake 與 character-set-client-handshake


my.cnf

[mysql]

default-character-set = gbk

[mysqld]

skip-character-set-client-handshake=1   跳過mysql程序起動時的字符參數設置 ,使用服務器端字符集設置

 修改不過來

[root@localhost ~]# mysql -uroot -p --default-character-set=latin1
Enter password: 
mysql> show variables like "%char%";
+--------------------------+------------------------------------+
| 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       | /usr/local/mysql56/share/charsets/ |
+--------------------------+------------------------------------+
8 rows in set (0.01 sec)

mysql> set names latin1 ;    //進入環境中才可以設置

Query OK, 0 rows affected (0.00 sec)

mysql> show variables like "%char%";
+--------------------------+------------------------------------+
| Variable_name            | Value                              |
+--------------------------+------------------------------------+
| character_set_client     | latin1                             |
| character_set_connection | latin1                             |
| character_set_database   | utf8                               |
| character_set_filesystem | binary                             |
| character_set_results    | latin1                             |
| character_set_server     | utf8                               |
| character_set_system     | utf8                               |
| character_sets_dir       | /usr/local/mysql56/share/charsets/ |
+--------------------------+------------------------------------+
8 rows in set (0.01 sec)

 

 

 

[my.cnf]

[mysql]
default-character-set = gbk

[mysqld]
character-set-client-handshake = 0
[root@localhost ~]# mysql -uroot -p --default-character-set=latin1
Enter password: 

mysql> show variables like "%char%";
+--------------------------+------------------------------------+
| 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       | /usr/local/mysql56/share/charsets/ |
+--------------------------+------------------------------------+
8 rows in set (0.01 sec)

mysql> set names gbk;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like "%char%";
+--------------------------+------------------------------------+
| Variable_name            | Value                              |
+--------------------------+------------------------------------+
| character_set_client     | gbk                                |
| character_set_connection | gbk                                |
| character_set_database   | utf8                               |
| character_set_filesystem | binary                             |
| character_set_results    | gbk                                |
| character_set_server     | utf8                               |
| character_set_system     | utf8                               |
| character_sets_dir       | /usr/local/mysql56/share/charsets/ |
+--------------------------+------------------------------------+
8 rows in set (0.18 sec)

 

 

 

 

 

[mysqld]

character-set-server = gbk skip-character-set-client-handshake=1 //使用服務端字符集
 
        
[root@localhost ~]# mysql -uroot -p --default-character-set=latin1
Enter password: 

mysql> show variables like "%char%";
+--------------------------+------------------------------------+
| Variable_name            | Value                              |
+--------------------------+------------------------------------+
| character_set_client     | gbk                                |
| character_set_connection | gbk                                |
| character_set_database   | gbk                                |
| character_set_filesystem | binary                             |
| character_set_results    | gbk                                |
| character_set_server     | gbk                                |
| character_set_system     | utf8                               |
| character_sets_dir       | /usr/local/mysql56/share/charsets/ |
+--------------------------+------------------------------------+
8 rows in set (0.02 sec)

 

 

 

[mysqld]

character-set-server = gbk character-set-client-handshake=0 //使用服務端字符集
 
        
[root@localhost ~]# mysql -uroot -p --default-character-set=latin1
Enter password: 
 mysql> show variables like "%char%"; +--------------------------+------------------------------------+ | Variable_name | Value | +--------------------------+------------------------------------+ | character_set_client | gbk | | character_set_connection | gbk | | character_set_database | gbk | | character_set_filesystem | binary | | character_set_results | gbk | | character_set_server | gbk | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql56/share/charsets/ | +--------------------------+------------------------------------+ 8 rows in set (0.02 sec)

 

 

 

[mysqld]
character
-set-server = gbk
character-set-client-handshake = 1

[root@localhost ~]# mysql -uroot -p --default-character-set=latin1
Enter password: 

mysql> show variables like "%char%";
+--------------------------+------------------------------------+
| Variable_name            | Value                              |
+--------------------------+------------------------------------+
| character_set_client     | latin1                             |
| character_set_connection | latin1                             |
| character_set_database   | gbk                                |
| character_set_filesystem | binary                             |
| character_set_results    | latin1                             |
| character_set_server     | gbk                                |
| character_set_system     | utf8                               |
| character_sets_dir       | /usr/local/mysql56/share/charsets/ |
+--------------------------+------------------------------------+
8 rows in set (0.02 sec)

 

mysql 字符集非交互設置:當mysql起動連到mysqld時,非手動命令

mysql字符集交互設置:通過命令行手動設置 

 

 

MySQL 5.5版本解決中文亂碼問題時my.ini內

[mysqld]項中不能再寫default-character-set=utf8

 

來看看如何解決亂碼問題:

在mysql中默認字符集是latin1,

想要設置字符集為uft-8,可以在 my.cnf 文件中添加以下設置:

·[client]

1 default-character-set=utf8

·[mysqld]

1 default-character-set=utf8
2 skip-character-set-client-handshake #此處是忽略客戶端的字符集,使用服務器的設置

(skip語句和client中的default選一個)

當然你可以在建立數據庫是規定字符集:

1 create database db_name default character set utf8 callate utf8-general-ci;

也可以在鏈接數據庫前設置:

1 set names 'utf8'

重點在紅字上,加了skip-character-set-client-handshake,client里面就不用加default了

01 show variables like 'characte%';
02 +--------------------------+----------------------------+
03 | Variable_name | Value |
04 +--------------------------+----------------------------+
05 | character_set_client | utf8 |
06 | character_set_connection | utf8 |
07 | character_set_database | utf8 |
08 | character_set_filesystem | binary |
09 | character_set_results | utf8 |
10 | character_set_server | utf8 |
11 | character_set_system | utf8 |
12 | character_sets_dir | /usr/share/mysql/charsets/ |
13 +--------------------------+----------------------------+

但是根據以上的配置過了后,mysql就無法啟動了,這是為什么呢?往下看:  

 

在5.1版本時,為了解決中文亂碼問題設置默認字符集為utf8時,在my.ini內的 [mysql] 和 [mysqld] 項中都是寫:

1 default-character-set=utf8

到了5.5版本, [mysql] 項內可以這么寫, [mysqld] 項內這么寫在啟動MySQL服務時會有1067錯誤,經查詢發現這里必須要這樣寫:

1 character-set-server=utf8

目前已知5.1和5.5有這么一個不同之處,且是從5.5的安裝版本自動生成的my.ini文件中看出的。配置免安裝的5.5版本還需要進一步的實驗。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM