linuxmysql編碼格式
㈠ 怎麼查看mysql默認編碼格式
查看MySQL編碼
SHOW VARIABLES LIKE 'char%';
因為當初安裝時指定了字元集為UTF8,所以所有的編碼都是UTF8。
character_set_client:你發送的數據必須與client指定的編碼一致!!!伺服器會使用該編碼來解讀客戶端發送過來的數據;
character_set_connection:通過該編碼與client一致!該編碼不會導致亂碼!當執行的是查詢語句時,客戶端發送過來的數據會先轉換成connection指定的編碼。但只要客戶端發送過來的數據與client指定的編碼一致,那麼轉換就不會出現問題;
character_set_database:資料庫默認編碼,在創建資料庫時,如果沒有指定編碼,那麼默認使用database編碼;
character_set_server:MySQL伺服器默認編碼;
character_set_results:響應的編碼,即查詢結果返回給客戶端的編碼。這說明客戶端必須使用result指定的編碼來解碼;
控制台編碼
修改character_set_client、character_set_results、character_set_connection為GBK,就不會出現亂碼了。但其實只需要修改character_set_client和character_set_results。
控制台的編碼只能是GBK,而不能修改為UTF8,這就出現一個問題。客戶端發送的數據是GBK,而character_set_client為UTF8,這就說明客戶端數據到了伺服器端後一定會出現亂碼。既然不能修改控制台的編碼,那麼只能修改character_set_client為GBK了。
伺服器發送給客戶端的數據編碼為character_set_result,它如果是UTF8,那麼控制台使用GBK解碼也一定會出現亂碼。因為無法修改控制台編碼,所以只能把character_set_result修改為GBK。
修改character_set_client變數:set character_set_client=gbk;
修改character_set_results變數:set character_set_results=gbk;
設置編碼只對當前連接有效,這說明每次登錄MySQL提示符後都要去修改這兩個編碼,但可以通過修改配置文件來處理這一問題:配置文件路徑:D:Program FilesMySQLMySQL Server 5.1 my.ini
㈡ linux C語言 連接mysql編碼問題
默認建的資料庫是utf8,建資料庫的時候字體是可以設置的,可以試試,我是有設過中文字碼的,建資料庫的時候設的,可以正確顯示
㈢ linux下rpm安裝mysql,如何修改默認字元集為utf8
如果/etc/目錄下沒有my.cnf配置文件,請到/usr/share/mysql/下找到*.cnf文件,拷貝其中一個到/etc/並改名為my.cnf中;
不存在啟動不了的情況啊,如有啟動不了,仔細查看你的my.cnf文件,是不是哪裡配置需要修改,然後查看一下mysql啟動腳本/etc/rc.d/init.d/mysql。最重要的結合你mysql的錯誤日誌去分析。
設置默認utf-8
在文件my.cnf中加上如下配置:
[mysqld]
init_connect = 'SET NAMESutf8'
character-set-server = utf8
collation-server =utf8_general_ci
針對第三點:
在創建資料庫完成後,最好查看下你資料庫的字元集是什麼?用show create database test;命令可以看到。必須保證你資料庫的編碼格式是utf-8的,這樣才可以保證插入到資料庫中的是中文格式的
㈣ linux mysql 創建資料庫 並且指定編碼
1、首先在linux終端窗口處輸入mysql -u root -p 命令,然後輸入root帳戶密碼連接sql資料庫。
㈤ 如何查看linux下mysql資料庫的編碼
一、查看MySQL資料庫伺服器和資料庫MySQL字元集。
1
show variables like '%char%';
二、查看MySQL數據表(table)的MySQL字元集。
1
show table status from sqlstudy_db like '%countries%';
三、查看MySQL數據列(column)的MySQL字元集。
1
show full columns from countries;
我們有學習小組也 希望一起學習進步 Oracle-Linux交流 103 382 476
㈥ mysql應該用什麼編碼格式儲存在資料庫里呢
mysql中一般用UTF-8編碼。
UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字元編碼,又稱萬國碼。由Ken Thompson於1992年創建。現在已經標准化為RFC 3629。UTF-8用1到6個位元組編碼UNICODE字元。用在網頁上可以同一頁面顯示中文簡體繁體及其它語言(如英文,日文,韓文)。
修改資料庫編碼的命令為:
alterdatabaseapp_relationcharactersetutf8;
它相當於下面的三句指令:
SETcharacter_set_client=utf8;
SETcharacter_set_results=utf8;
SETcharacter_set_connection=utf8;
㈦ linux伺服器上的mysql字元集里沒有GBK編碼
如果你是編譯安裝的話,你最好加上--with-charset=gbk
--with-extra-charsets=all
另外,如果你上面編譯的時候使用了--with-charset=gbk
,那麼你創建的資料庫默認就是gbk字元集,否則,需要你在創建資料庫時指定資料庫的字元集,
如:create
database
dbname
default
character
set
gbk;
㈧ linux 怎麼修改資料庫編碼格式
首先我們在終端窗口處輸入mysql -u root -p 命令,然後輸入root帳號密碼連接資料庫。具體操作如下圖所示。
連接上資料庫後,執行命令show variables like 'character%';查看資料庫的編碼格式,可以看到資料庫以及資料庫服務端的默認編碼都為:latin1編碼。具體操作如下圖所示。
然後我們退出資料庫,修改資料庫的配置文件my.cnf文件,此文件如果通過rpm安裝一般在/etc/目錄下,具體修改成的樣式如下圖所示。
修改完成後,我們保存配置的修改,然後執行命令service mysqld restart。重新啟動資料庫。具體操作如下圖所示。
然後我們待資料庫重啟完成後,重新連接資料庫,執行命令show variables like 'character%'; 查看更改後的編碼格式。具體展示如下圖所示,可以看到已經修改為utf8編碼。
當然對於某個資料庫的編碼格式的查看,我們可以通過執行命令show create database+資料庫名稱;具體展示如下圖所示。
我們也可以通過執行命令修改資料庫的編碼格式,可以通過命令:alter database +資料庫名稱 default character set utf8 collate utf8_general_ci;修改為utf8格式。具體操作如下圖所示。
修改完成後,我們再次執行命令 show create database +資料庫名稱,來查看確認是否更改成功。可以看到已經是utf8格式了。
㈨ linux下怎麼修改mysql的字元集編碼
安裝完的MySQL的默認字元集為 latin1 ,為了要將其字元集改為用戶所需要的(比如utf8),就必須改其相關的配置文件;由於linux下MySQL的默認安裝目錄分布在不同的文件下;不像windows一樣放在同一目錄下,只需修改其中的my.ini文件,重起後就生效了;所以先來看看linux下MySQL的資料庫文件、配置文件和命令文件分別在不同的目錄 :
1、資料庫目錄,其所創建的資料庫文件都在該目錄下
/var/lib/mysql/
2、配置文件 (mysql.server命令及配置文件所在地)
/usr/share/mysql
3、相關命令(如mysql mysqladmin等)
/usr/bin
4、啟動腳本(如mysql啟動命令)
/etc/rc.d/init.d/
查看默認字元集
#mysql -u root - p
#(輸入密碼)
mysql> show variables like 'character_set%' ;//或者是status
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
修改字元集 :
1.查找/etc目錄下是否有my.cnf文件;
#ls -l | grep my.cnf (在/etc下查找是否有my.cnf文件存在)
2.如果沒有就要從/usr/share/mysql,拷貝一個到/etc 下,在/usr/share/mysql目錄下有五個後綴為.cnf的文件,分別是 my-huge.cnf my-innodb-heavy-4G.cnf my-large.cnf my-medium.cnf my-small.cnf ;從中隨便拷貝一個到/etc目錄下並將其改為my.cnf文件,我選擇的是my-medium.cnf :
#cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
3.修改my.cnf文件,在該文件中的三個地方加上 default-character-set=utf8([client] [mysqld] [mysql])
#vi /etc/my.cnf
修改如下:(紅色為添加部分)
[client]
#password = your_password
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
default-character-set=utf8
init_connect='SET NAMES utf8' //此行可不加
[mysql]
no-auto-rehash
default-character-set=utf8
保存退出;
4.重起MySQL伺服器,使其設置的內容生效
#/etc/init.d/mysql restart
5. 重新登入mysql;
# mysql -u root - p
#(輸入密碼)
mysql> show variables like 'character_set%' ;
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |(都生成了utf8,成功了 哈哈哈)
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
mysql啟動和停止 操作 :
可以通過 #/etc/init.d/mysql [start | stop | restart](實現啟動,停止,重啟)
也可以通過 #service mysql [start | stop | restart](實現啟動,停止,重啟)
*********************************
另外:如果在修改字元集前,嘗試在資料庫中插入中文,那麼當修改了字元集後,在你所插入中文的資料庫中(在別的資料庫中可能沒問題),
通過show variables like 'character_set%'查詢的結果可如下:
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
如圖,character_set_database仍然會為latin1,我採取的辦法是先導出該資料庫中數據,如果數據不重要,則可drop此資料庫,
然後再重新create一個資料庫。
㈩ 怎麼查看mysql的資料庫編碼格式
1. ASCII
用途:用來映射簡單的單位元組字元,比如大小寫英文字母、阿拉伯數字、常用的標點符、運算符、控制字元等。
編碼范圍:U+0000 - U+007F
注意:對於用這類字元的場景夠用了,但是卻無法表達比如漢字,日文等編碼。
2. UNICODE
用途:用來映射包含 ASCII 以內的其他的所有字元。
編碼范圍:U+0000 - U+10FFFF
注意:ASCII 是 UNICODE 的子集,ASCII 編碼的字元可以無損轉換為 UNICODE 編碼的字元。
MySQL 常用字元集
1. Latin1
Latin1 是 cp1252 或者 ISO-8859-1 的別名。ISO-8859-1 編碼是單位元組編碼,向下兼容 ASCII。
編碼范圍:U+0000 - U+00FF
ISO-8859-1 收錄的字元除 ASCII 收錄的字元外,還包括西歐語言、希臘語、泰語、阿拉伯語、希伯來語對應的文字元號。
單位元組內的空間都被 ISO-8859-1 編碼佔用,所以能夠用 ISO-8859-1 編碼存儲、傳輸其他任何編碼的位元組流。
比如把一個 Utf8mb4 的編碼或者 GBK 的編碼存入 Latin1,不會有任何問題。因為 Latin1 保留了原始的位元組流,這也就是 MySQL 長期以來把 Latin1 做默認字元集的原因。
但是由於 Latin1 對任何字元都存放位元組流,造成了字元個數的浪費。
比如:
CHAR(10) CHARACTER SET LATIN1;CHAR(10) CHARACTER SET UTF8;
該欄位中存儲字元個數 UTF8 是 Latin1 的三倍!!!
2. GB18030
GB18030 是中國官方標准字元集,向前兼容 GBK、GB2312,是這兩個的超集。用 1、2、4 個位元組分別表示一個符號。比如對一般中文字元,默認是用兩個位元組編碼存儲。Windows 系統,默認用的就是 GB18030。
若只是存儲中文字元,那 GB18030 最佳。
原因有兩點:
1)佔用空間小,比如比 UTF8 小。
2)存儲的漢字根據拼音來排序,檢索快。
3. UTF8
UTF8 是 Unicode 的編碼實現,可以存儲 UNICODE 編碼對應的任何字元, 這也是使用最多的一種編碼。最大的特點就是變長的編碼方式,用 1 到 4 個位元組表示一個符號,可以根據不同的符號編碼位元組長度。
字母或數字用 1 位元組,漢字用 3 位元組,emoji 表情符號用 4 位元組。UTF8 字元集目前是使用最廣泛的。
注意!MySQL 里常說的 UTF8 是 UTF8MB3 的別名,UTF8MB3 是 UTF8MB4 的子集,UTF8MB4 才是真正的 4 位元組 UTF8 字元集!
UTF8MB3 表示最大支持 3 個位元組存儲字元,UTF8MB4 表示最大 4 個位元組存儲字元。根據實際需要和未來展望,MySQL 8.0 已經默認用 UTF8MB4 基礎字元集。