1.mysql(4.1以後版本) 伺服器中有六個關鍵位置使用了字符集的概念,他們是:
1
.client
2
.connection
3
.database
4
.results
5
.server
6
.system
mysql有兩個字符集概念:
乙個就是字符集本身,
乙個是字符集校驗規則。
字符集影響資料在傳輸和儲存過程中的處理方式,而字符集校驗則影響order by和group by這些排序方式。
2. 字符集功能細分如下:
2.1
.和儲存有關的
伺服器字符集 (@
@character_set_server
)
庫字符集 (@
@character_set_database
)
表字符集
字段字符集
character_set_server: 伺服器安裝時指定的預設字符集設定。
character_set_database: 資料庫伺服器中某個庫使用的字符集設定,如果建庫時沒有指明,將使用伺服器安裝時指定的字符集設定。
character_system: 資料庫系統使用的字符集設定。
在建立乙個表的時候,每個字段只要不是binary,都會有乙個字符集。如果不指定,那麼在show create table的時候,它是不會顯示出來的。
建表時候,字段字符集的選取方式如下,這是一種繼承方式:
*
if
字段指定的字符集
*
else
if
表指定的字符集
*
else
if
@
@character_set_database
*
else
@
@character_set_server
(如果沒有設定,這個值為latin1)
2.2
.和傳輸有關的
@@character_set_connection
@@character_set_results
@@character_set_client
character_set_connection: 連線資料庫的字符集設定型別,如果jsp沒有指明連線資料庫使用的字符集型別就按照伺服器端預設的字元設定
character_set_results: 資料庫給客戶端返回時使用的字符集設定,如果沒有指明,使用伺服器預設的字符集
character_set_client: 客戶端使用的字符集,相當於網頁中的字符集設定
3.字符集的校對規則
字符集的校對規則設定分別由上面的character_set_connection, character_set_database, character_set_server決定
collation_connection: 連線字符集的校對規則
collation_database: 預設資料庫使用的校對規則。當預設資料庫改變時伺服器則設定該變數。如果沒有預設資料庫,變數的值同collation_server
collation_server: 伺服器的預設校對規則
以上內容中character_set_client, character_set_connection, character_set_results 受客戶端預設字符集影響,其中jsp編譯mysql模組時的預設字符集同樣也受到它鏈結的mysql動態庫影響,從而影響到php的character_set_connection, character_set_client設定。
4.當預設字符集不是utf8時,設定my.cnf:
[mysqld]
default
-character-set=utf8
default
-collation=utf8_general_ci
//default-character-set只能改變對儲存層(server,database,table,column,system)的設定,對於客戶端和伺服器端的通訊層沒有任何影響。
5.檢視字符集設定:
mysql> show variables like 『character_set_%』;
+————————–+—————————————————————————+
| 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
6.解決字符集通訊設定不匹配的方法:
(修改預設的character_set_client,character_set_connection,character_set_result)
1
. jsp程式在查詢資料庫之前,執行mysql_query(」set names utf8;」);
2
.修改my.cnf,在[mysqld]中加入init-connect=」set names utf8」 (對於超級使用者連線該選項無效)
3
. 啟動mysqld 加入引數 –skip-character-set-client-handshake 忽略客戶端字符集
mysql資料庫字符集初步理解
1.mysql 4.1以後版本 伺服器中有六個關鍵位置使用了字符集的概念,他們是 1.client 2.connection 3.database 4.results 5.server 6.system mysql有兩個字符集概念 乙個就是字符集本身,乙個是字符集校驗規則。字符集影響資料在傳輸和儲存...
修改mysql資料庫字符集
首先修改預設建立資料庫字符集 c program files mysql mysql server 5.0資料夾下,找到my.ini檔案 default character set latin1 改為default character set 你想設定的字符集 之後重啟mysql,建立即可 如果想修...
mysql資料庫字符集問題
向mysql資料庫插入漢字的時候,說是data too long 檢視我設定的長度 是varchar 長度100,後來想想可能是字符集的問題,重新設定資料庫的字符集後就ok mysql create database database name character set gbk 或者是utf 8都...