1. 程式人生 > >mysql預設字元編碼設定教程:my.ini設定字元編碼

mysql預設字元編碼設定教程:my.ini設定字元編碼

 

轉載2016-06-07 21:49:26

標籤:mysql

本文介紹了MySQL資料庫中預設字元編碼的設定方法,如何設定與修改mysql預設編碼,my.ini設定字元編碼的教程,需要的朋友參考下。

本節重點:

mysql基礎配置之mysql的預設字元編碼的設定(my.ini設定字元編碼)

mysql的預設編碼是latin1,不支援中文。

怎麼修改mysql的預設編碼?本文以utf-8預設編碼修改為例來介紹。

注意,修改mysql預設編碼的方法,要修改的地方非常多,相應的修改方法也很多。

為大家分享一種最簡單最徹底的修改mysql預設編碼的方法,一起來看看吧。

一、windows系統下面

1、中止mysql服務

2、mysql設定編碼命令:

set names 'utf8';

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

  但是,這只是一種假象

  此種方式只在當前狀態下有效,當重啟資料庫服務後失效。

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

3、在mysql的安裝目錄下找到my.ini,如果沒有就把my-medium.ini複製為一個my.ini即可。

開啟my.ini以後,

[client]

  default-character-set=utf8

[mysql]

  default-character-set=utf8

[mysqld]

  default-character-set=utf8    或   character-set-server=utf8

       注: 若使用character-set-server=utf8 語句可免去下面步驟(親測可行)

       如圖​

 [mysqld]標籤處使用 ‘character-set-server=utf8’效果

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

在data/performance_schema目錄下的: db.opt檔案:  

default-character-set=utf8

default-collation=utf8_general_ci

4、啟動mysql服務,由於資料庫在開始配置時,我選擇的編碼是utf8,所以在這裡使用 show variables like '%char%';  結果顯示編碼均為utf8

mysql> SHOW VARIABLES LIKE '%char%';

  確保所有的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

修改已有表格編碼

alter table map_data modify province varchar(32) character set utf8;

  另外注意事項:

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

  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

二、linux系統下面(這部分只是轉載,沒嘗試過)

1、中止mysql服務(bin/mysqladmin -u root shutdown)

2、在/etc/下找到my.cnf,如果沒有就把mysql的安裝目錄下的support-files目錄下的my-medium.cnf複製到/etc/下並改名為my.cnf即可

3、開啟my.cnf以後,在[client]和[mysqld]下面均加上default-character-set=utf8

,儲存並關閉

4、啟動mysql服務(bin/mysqld_safe &)

提示:當前資料庫中已經存在的資料仍保留現有的編碼方式,因此需要自行轉碼。

注意:如果是高版本的mysql中,增加時,將mysql預設編碼修改為utf-8呢?只需在my.ini中的[mysqld]組名的末尾新增:character-set-server=utf8即可。

mysqld:unknown variable 'default-character-set=utf8'的錯誤原因是什麼?因為引數:default-character-set=utf8 在較新版本的mysql 中已移除。建議高版本的mysql使用”character-set-server“,而不要使用“default-character-set”。