工作隨筆:瞎記-mysql 自定義配置

 [mysqld]
port=3500
socket=/var/lib/mysql/mysql.sock
log-bin=mysql-bin
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
collation-server =utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
log_slow_queries= /var/log/mysql-slow.log
long_query_time= 2
# skip-grant-tables
skip-external-locking
lower_case_table_names = 1
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 256K
thread_cache_size       = 8
innodb_buffer_pool_size = 128M
innodb_log_file_size = 8M
innodb_thread_concurrency = 8
innodb_file_per_table
bind-address=0.0.0.0
[mysql]
default-character-set=utf8
# skip-grant-tables
[client]
default-character-set=utf8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

  第一階段:

  mysql設置編碼命令

 

SET character_set_client = utf8;
SET character_set_connection = utf8;
SET character_set_database = utf8;
SET character_set_results = utf8;
SET character_set_server = utf8;

 

  然後 mysql> SHOW VARIABLES LIKE 'character%'; 你可以看到全變爲 utf8 。

但是,這只是一種假象

  此種方式只在當前狀態下有效,當重啓數據庫服務後失效。

  所以如果想要不出現亂碼只有修改my.ini文件,

  從my.ini下手(標籤下沒有的添加,有的修改)

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

  以上3個section都要加default-character-set=utf8,平時我們可能只加了mysqld一項。

  然後重啓mysql,執行

  mysql> SHOW VARIABLES LIKE 'character%';

 

 

mysql 創建 數據庫時指定編碼很重要,很多開發者都使用了默認編碼,亂碼問題可是防不勝防。制定數據庫的編碼可以很大程度上避免倒入導出帶來的亂碼問題。

  網頁數據一般採用UTF8編碼,而數據庫默認爲latin 。我們可以通過修改數據庫默認編碼方式爲UTF8來減少數據庫創建時的設置,也能最大限度的避免因粗心造成的亂碼問題。

  我們遵循的標準是,數據庫,表,字段和頁面或文本的編碼要統一起來

  我們可以通過命令查看數據庫當前編碼:

  mysql> SHOW VARIABLES LIKE 'character%';

  發現很多對應的都是 latin1,我們的目標就是在下次使用此命令時latin1能被UTF8取代。

  第一階段:

  mysql設置編碼命令

 

SET character_set_client = utf8;
SET character_set_connection = utf8;
SET character_set_database = utf8;
SET character_set_results = utf8;
SET character_set_server = utf8;

 

  然後 mysql> SHOW VARIABLES LIKE 'character%'; 你可以看到全變爲 utf8 。

  但是,這只是一種假象

  此種方式只在當前狀態下有效,當重啓數據庫服務後失效。

  所以如果想要不出現亂碼只有修改my.ini文件,

  從my.ini下手(標籤下沒有的添加,有的修改)

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

  以上3個section都要加default-character-set=utf8,平時我們可能只加了mysqld一項。

  然後重啓mysql,執行

  mysql> SHOW VARIABLES LIKE 'character%';

  確保所有的Value項都是utf8即可。

  但是可惡的事情又來了,

  |character_set_client      | utf8                                  |
  | character_set_connection | utf8                                  |
  | character_set_database   | utf8                                  |
  | character_set_filesystem | binary                                |
  | character_set_results    | utf8                                  |
  | character_set_server     | latin1                                |
  | character_set_system     | utf8

  注意  該配置| character_set_server     | latin1 無法設置成UTF8   交互時候仍然會出現亂碼。
 

 第二階段:找到下面這東東

  X:\%path%\MySQL\MySQL Server 5.0\bin\MySQLInstanceConfig.exe

  重新啓動設置,將默認編碼設置爲utf8.這樣就能達到我們所要的效果了。

  mysql> SHOW VARIABLES LIKE 'character%';

  +--------------------------+---------------------------------------------------------+
  | 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       | C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ |
  +--------------------------+---------------------------------------------------------+

  8 rows in set

  另外注意事項:

  1、建表時加utf8,表字段的Collation可加可不加,不加時默認是utf8_general_ci了。

 

CREATE TABLE `tablename4` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`varchar1` varchar(255) DEFAULT NULL,
`varbinary1` varbinary(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

 

  2、網頁xxx.php/jsp保存時選擇utf8編碼,頁頭最好加上

  header('conten-type:text/html;charset=utf-8');

  在執行CRUD操作前先執行一下

  mysql_query("set names utf8");

  -------------------------

  連接數據庫設置編碼

  jdbc:mysql://地址:3306/數據庫名?characterEncoding=utf8

  -------------------------

  java中的常用編碼UTF-8;GBK;GB2312;ISO-8859-1;

  對應mysql數據庫中的編碼utf8;gbk;gb2312;latin1

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章