首先,mysql的字符集問題主要是兩個概念:
前者是字元內容及編碼,後者是對前者進行比較操作的一些規則。這兩個引數集可以在數據庫例項、單個資料庫、表、列等四個級別指定。
對於使用者來說,一般推薦使用utf8編碼來儲存資料
。而要解決亂碼問題,不單單是mysql資料的儲存
,還和使用者程式檔案的編碼方式
、使用者程式和mysql資料庫的連線方式
都有關係。
mysql有預設的字符集,這個是安裝的時候確定的,在編譯mysql的時候可以通過這兩個引數來指定預設的字符集為utf8
在mysql5.5版本中
default_charset=utf8
default_collation=utf8_general_ci
在mysql5.1版本中
--with-charset=utf8
--with-collation=utf8_general_ci
這樣指定後,客戶端連線到資料庫的編碼方式也預設是utf8了,應用程式不需要任何處理。
通過二進位制程式的方式安裝,那麼這時候mysql的預設字符集是latin1
,可以修改my.cnf檔案中引數,改變預設字符集。
首先,解決資料儲存和比較的問題,但是對客戶端的連線是沒有作用的。
在[mysqld]下新增
mysql 5.5 版本
character-set-server=utf8
mysql 5.1 版本
default-character-set=utf8
在[client]
下新增
default-character-set=utf8
這樣建資料庫建表的時候的預設字符集就是utf8
。
客戶端登入時需要設定這幾個引數,但這三個引數是不能寫在配置檔案my.cnf裡,只能通過set命令來動態修改
set character_set_client = utf8
set character_set_results = utf8
set character_set_connection = utf8
init_connect命令在每個普通使用者連線上來的時候都會觸發執行,可以在[mysqld]
部分增加以下一行設定連線字符集:
在[mysqld]
下新增:
init_connect = 'set names utf8'
但是要注意的是,這個命令對具有super許可權的使用者是不生效的。 更改SQLServer例項預設字符集
今天同事的新安裝的sql server 2008 r2 寫入中文亂碼,發現是排序 的問題 通過修改字符集,可以寫入中文,但是varchar型別的還是亂碼,修改資料庫字符集 alter database dbname collate chinese prc ci as 最後只能使用重建master庫來...
oracle更改字符集
修改oracle 10g的字符集 修改資料庫字符集為 zhs16gbk 首先用scott tiger orcl登入到sql plus 檢視伺服器端字符集 sql select from v nls parameters 修改 sqlplus nolog sql conn as sysdba 若 此時...
Oracle 更改字符集
裝了乙個oracle練手,入資料時漢字顯示異常,與正常工作的伺服器做了對比,發現字符集設的不對 按照如下方法更改字符集,sql conn assysdba connected.sql shutdown immediate database closed.database dismounted.ora...