MySQL 編碼機制

2022-10-04 05:57:09 字數 1423 閱讀 1135

character_set_client ,這是使用者告訴mysql查詢是用的什麼字符集。

character_set_connection ,mysql接受到使用者查詢後,o***le按照character_set_client將其轉化為character_set_cono***lenection設定的字符集。

character_set_results , mysql將儲存的資料轉換成character_set_results中設定的字符集傳送給使用者。

discuz並沒有使用set names character

set names 'x'語句與這三個語句等價:

mysql> set character_set_client = x; mysql> set character_set_results = x; mysql> set character_set_cowww.cppcns.comnnection = x;

而discuz裡面www.cppcns.com是

複製** **如下:

@mysql_query("set character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary", $this->link);

set character_set_client = binary;使用二進位制字符集查詢

此三處的字元設定很大程度上會解決亂碼問題,那麼著三個設定具體有什麼作用呢?

character_set_client指定的是sql語句的編碼,如果設定為 binary,mysql就當二進位制來處理,character_set_connection指定了mysql 用來執行sql語句的時候使用的編碼,也就是說,程式傳送給mysql 的sql語句,會首先被mysql從character_set_client指定的編碼轉換到character_set_connection指定的編碼,如果character_set_clien指定的是binary,則mysql就會把sql語句按照character_set_connection指定的編碼解釋執行.

當執行sql語句的過程中,比如向資料庫中插入欄位的時候,欄位也有編碼設定,如果欄位的編碼設定和character_set_connection指定的不同,則mysql 會把插入的資料轉換成字段設定的編碼。sql語句中的條件判斷和sql插入語句的執行過程類似.

當sql執行完畢像客戶端返回資料的時候,會o***le把資料從欄位指定的編碼轉換為character_set_results指定的編碼,如果character_set_results=null 則不做任何轉換動作,(注意這裡設定為null不等於沒有設定,沒有設定的時候mysql會繼承全域性設定),

工作中比較有用的就是利用mysql進行轉碼、不同編碼的資料庫之間共用資料。

本文標題: mysql 編碼機制

本文位址:

MySQL編碼機制

大家都知道從 mysql4.1 版本開始,支援多種編碼,包括我們熟知的 latin1 gbk utf8 big5 等等,還有一些我們聞所未聞的。在使用 php 連線 mysql 查詢出來的資料有的時候居然會是亂碼,關於亂碼的解決首先我們要了解 mysql 的編碼機制。拿 discuz 論壇為例,di...

mysql 程式編碼 MySql編碼

一般在mysql使用中文查詢 都是用 set names character character set client 這是使用者告訴mysql查詢是用的什麼字符集。character set connection mysql接受到使用者查詢後,按照character set client將其轉化為...

mysql事務機制 Mysql事務機制

mysql事務是指將資料庫從一種一致性狀態轉到另一種一致性狀態 mysql事務具有acid特性 原子性 atomicity 事務中的所有操作,要麼全部執行,要麼都不執行 一致性 consistency 事務開始和結束後,資料庫的完整性不會被破壞 隔離性 isolation 事務之間互不影響。事務的隔...