MySQL設置UTF8字符


最近看了下Django, 發現數據庫中文編碼問題, 需要修改數據庫的編碼, 統一為UTF8, 這樣可以解決亂碼問題

修改my.ini文件, 添加三個地方

注意: 5.1版本在mysqld下設置default-character-set=utf8, 5.5的設置變了, 我使用的環境是mysql 5.5

[client] 
default-character-set=utf8

[mysqld]
character-set-server=utf8
init_connect='SET NAMES utf8'


[mysql]
default-character-set=utf8

 修改完成之后, 重啟數據庫, 可以查看

mysql> \s
--------------
mysql  Ver 14.14 Distrib 5.5.27, for Win32 (x86)

Connection id:          33
Current database:
Current user:           root@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.5.27 MySQL Community Server (GPL)
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:               3306
Uptime:                 3 min 53 sec

Threads: 1  Questions: 282  Slow queries: 0  Opens: 61  Flush tables: 1  Open tables: 54  Queries per second avg: 1.210
--------------

這樣保證連接mysql之后, 默認都使用了UTF8編碼

也可以查看全局變量

mysql> SHOW VARIABLES LIKE 'character_set_%';
+--------------------------+---------------------------------------------+
| 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       | XXX\mysql\share\charsets\ |
+--------------------------+---------------------------------------------+
8 rows in set (0.00 sec)

 

mysql> SHOW VARIABLES LIKE 'collation_%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

 

已經建立的數據庫和表需要進行修改和更新, 分別對數據庫和表進行, 數據量小可以考慮導出為sql語句后修改

修改數據庫, 表和字段的sql語法參考如下

修改數據庫, 以test數據庫為例

mysql> alter database `test` character set utf8;

 修改表為utf8, 以book表為例

mysql> alter table `book` character set utf8;

以book表的title字段為例

mysql> alter table `books_book` modify `title` varchar(100) character set utf8;

 其中sql語句中的反引號[`]是用來轉義的

參考:

  1. [#0x004E] MySQL 5.5版本下my.ini內[mysqld]項中不能再寫default-character-set=utf8
  2. MySQL修改編碼設置及亂碼問題

 

 


免責聲明!

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



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