新聞中心
怎么修改mysql數(shù)據(jù)庫字符集編碼為utf-8
你要是用一個可視化操作的界面就簡單了,就比如navicat for mysql右鍵數(shù)據(jù)庫--數(shù)據(jù)庫屬性---字符集---utf-8 unicode /排序規(guī)則---utf8-gernal-ci就行了
10年積累的成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先做網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有巴楚免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
如何在mysql中存取utf8mb4編碼的字符
整理 MySQL 8.0 文檔時(shí)發(fā)現(xiàn)一個變更:
默認(rèn)字符集由 latin1 變?yōu)?utf8mb4。想起以前整理過字符集轉(zhuǎn)換文檔,升級到 MySQL 8.0 后大概率會有字符集轉(zhuǎn)換的需求,在此正好分享一下。
當(dāng)時(shí)的需求背景是:
部分系統(tǒng)使用的字符集是 utf8,但 utf8 最多只能存 3 字節(jié)長度的字符,不能存放 4 字節(jié)的生僻字或者表情符號,因此打算遷移到 utf8mb4。
遷移方案一1. 準(zhǔn)備新的數(shù)據(jù)庫實(shí)例,修改以下參數(shù):[mysqld]## Character Settingsinit_connect='SET NAMES utf8mb4'#連接建立時(shí)執(zhí)行設(shè)置的語句,對super權(quán)限用戶無效character-set-server = utf8mb4collation-server = utf8mb4_general_ci#設(shè)置服務(wù)端校驗(yàn)規(guī)則,如果字符串需要區(qū)分大小寫,設(shè)置為utf8mb4_binskip-character-set-client-handshake#忽略應(yīng)用連接自己設(shè)置的字符編碼,保持與全局設(shè)置一致## Innodb Settingsinnodb_file_format = Barracudainnodb_file_format_max = Barracudainnodb_file_per_table = 1innodb_large_prefix = ON#允許索引的最大字節(jié)數(shù)為3072(不開啟則最大為767字節(jié),對于類似varchar(255)字段的索引會有問題,因?yàn)?55*4大于767)
2. 停止應(yīng)用,觀察,確認(rèn)不再有數(shù)據(jù)寫入
可通過 show master status 觀察 GTID 或者 binlog position,沒有變化則沒有寫入。
3. 導(dǎo)出數(shù)據(jù)
先導(dǎo)出表結(jié)構(gòu):mysqldump -u -p --no-data --default-character-set=utf8mb4 --single-transaction --set-gtid-purged=OFF --databases testdb /backup/testdb.sql
后導(dǎo)出數(shù)據(jù):mysqldump -u -p --no-create-info --master-data=2 --flush-logs --routines --events --triggers --default-character-set=utf8mb4 --single-transaction --set-gtid-purged=OFF --database testdb /backup/testdata.sql
4. 修改建表語句
修改導(dǎo)出的表結(jié)構(gòu)文件,將表、列定義中的 utf8 改為 utf8mb4
5. 導(dǎo)入數(shù)據(jù)
先導(dǎo)入表結(jié)構(gòu):mysql -u -p testdb /backup/testdb.sql
后導(dǎo)入數(shù)據(jù):mysql -u -p testdb /backup/testdata.sql
6. 建用戶
查出舊環(huán)境的數(shù)據(jù)庫用戶,在新數(shù)據(jù)庫中創(chuàng)建
7. 修改新數(shù)據(jù)庫端口,啟動應(yīng)用進(jìn)行測試
關(guān)閉舊數(shù)據(jù)庫,修改新數(shù)據(jù)庫端口重啟,啟動應(yīng)用
使用utf-8格式的時(shí)候怎么在mysql中插入中文
A. 字符編碼:
“使用命令行方式登陸到MySQL服務(wù)器, 建立一個數(shù)據(jù)庫,數(shù)據(jù)庫編碼設(shè)為UTF-8。此時(shí),如果直接在命令行窗口使用insert語句插入中文,就遇到類似 ERROR 1406 (22001): Data too long for column 'name' at row 1 錯誤。乍一看,是字段長度引起的問題,但是實(shí)際是字符編碼的問題。可是嘗試以下解決方法:
1、在Linux中,使用終端方式登陸MySQL服務(wù)器,運(yùn)行以下命令:
set names utf8;
該命令將終端的字符編碼設(shè)為了UTF-8。此后再插入數(shù)據(jù)庫中的內(nèi)容都會按照UTF-8的編碼來處理。
注意:在Linux中,終端方式中直接插入中文內(nèi)容,可能并不會出現(xiàn)1406錯誤,但是這時(shí)插入的數(shù)據(jù)
是按照系統(tǒng)的默認(rèn)編碼進(jìn)行處理。因此對編碼為UTF-8的數(shù)據(jù)庫,在顯示數(shù)據(jù)的地方可能會出現(xiàn)亂碼。
2、在Windows下,命令行窗口不支持UTF-8編碼,所以使用“set names utf8;”不會達(dá)到轉(zhuǎn)化中文的
效果。但是這個問題還是可以解決的:
(1)使用默認(rèn)編碼建立數(shù)據(jù)庫。這種情況下就可以直接輸入中文了,但是相應(yīng)的問題,就是會
失去UTF-8編碼的靈活性。特別是不利于軟件的國際化。
(2)放棄命令行窗口登錄MySQL,使用圖形化客戶端。客戶端工具可以MySQL的官方網(wǎng)站上找到。”
B. Mysql配置文件:
“在my.ini里找到sql- mode='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'把其中 的STRICT_TRANS_TABLES,去掉,或者把sql- mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION注釋掉,然 后重啟mysql就ok了”
如何在mysql中存取utf8mb4編碼的字符?
utf8編碼可以支持一到4字節(jié)的字符編碼,在mysql用我們一般使用utf8編碼來處理字符類型,通常情況下都沒有問題,但遇到4字節(jié)編碼的字符,在數(shù)據(jù)存取的時(shí)候就會有問題了。\x0d\x0a通常我們可能會得到一個錯誤或者警告:Incorrect string value: '/xF0/x9D/x8C/x86' for column ...\x0d\x0aMysql 從5.5.3版本開始支持4字節(jié)的utf8編碼,如果你的Mysql數(shù)據(jù)庫是5.5.3+,按照以下步驟就能解決這個問題,如果版本低于5.5.3,是不是可以考慮升級數(shù)據(jù)庫版本呢?\x0d\x0a1、在修改數(shù)據(jù)庫編碼前先對數(shù)據(jù)庫備份(雖然utf8mb4兼容utf8,但有備無患)\x0d\x0a2、修改數(shù)據(jù)庫的編碼、表的編碼、列的編碼為utf8mb4\x0d\x0a3、在Mysql數(shù)據(jù)庫配置文件(my.ini)中加入如下設(shè)置\x0d\x0a\x0d\x0a[client]default-character-set = utf8mb4[mysql]default-character-set = utf8mb4[mysqld]character-set-client-handshake = FALSEcharacter-set-server = utf8mb4collation-server = utf8mb4_unicode_ci\x0d\x0a\x0d\x0a重新啟動Mysql數(shù)據(jù)庫,確認(rèn)設(shè)置生效\x0d\x0a\x0d\x0amysql show VARIABLES like '%char%';+--------------------------+----------------------------------------+| Variable_name | Value |+--------------------------+----------------------------------------+| character_set_client | utf8 || character_set_connection | utf8 || character_set_database | utf8mb4 || character_set_filesystem | binary || character_set_results | utf8 || character_set_server | utf8mb4 || character_set_system | utf8 || character_sets_dir | /home/app/mysql-5.5.33/share/charsets/ |+--------------------------+----------------------------------------+8 rows in set\x0d\x0a\x0d\x0a4、在獲取數(shù)據(jù)庫連接的時(shí)候執(zhí)行sql:set names utf8mb4;我使用的是alibaba的開源數(shù)據(jù)庫連接池程序,在配置文件中增加一行如下配置\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a重新啟動應(yīng)用程序,問題解決
如何設(shè)置mysql數(shù)據(jù)庫為utf-8編碼
檢查當(dāng)前數(shù)據(jù)庫編碼。
使用語句:
show variables like ‘%character%’;
show variables like’%collation%’;
如果不是以上情況,需要將mysql編碼設(shè)置為utf-8。具體步驟如下:
如果安裝mysql時(shí)安裝了“MySql Sever Instance Configuration Wizard”,則只需要啟動該程序進(jìn)行相應(yīng)設(shè)置即可。如下面截圖中所描述,需要將默認(rèn)編碼設(shè)置為utf8
如果沒有該程序,需要手動修改mysql編碼。
1、 編輯MySql的配置文件
MySql的配置文件Windows下一般在系統(tǒng)目錄下或者在MySql的安裝目錄下名字叫my.ini,可以搜索,Linux下一般是 /etc/my.cnf
--在 [mysqld] 標(biāo)簽下加上以下內(nèi)容:
default-character-set = utf8
character_set_server = utf8
注意:如果此標(biāo)簽下已經(jīng)存在“default-character-set=GBK”類似的內(nèi)容,只需修改即可。
--在 [mysql] 標(biāo)簽下加上一行
default-character-set = utf8
--在 [mysql.server]標(biāo)簽下加上一行
default-character-set = utf8
--在 [mysqld_safe]標(biāo)簽下加上一行
default-character-set = utf8
--在 [client]標(biāo)簽下加上一行
default-character-set = utf8
2、 重新啟動MySql服務(wù)
Windows可在服務(wù)管理器中操作,也可使用命令行:
net stop mysql 回車
net start mysql 回車
服務(wù)名可能不一定為mysql,請按自己的設(shè)置
Linux下面可是用 service mysql restart
如果出現(xiàn)啟動失敗,請檢查配置文件有沒有設(shè)置錯誤
3、 查看設(shè)置結(jié)果
登錄MySql命令行客戶端:打開命令行
mysql –uroot –p 回車
輸入密碼
進(jìn)入mysql后 執(zhí)行 :show variables like "% character %";
另外:
建立數(shù)據(jù)庫時(shí)可以使用以下命令:
create database app_relation character set utf8;
use app_relation;
source app_relation.sql;
修改數(shù)據(jù)庫編碼的命令為:
alter database app_relation character set utf8;
怎樣把mysql中的建表utf8格式
用alter語句. 如果數(shù)據(jù)庫已經(jīng)有數(shù)據(jù)表了, 那每個表都要修改. (修改數(shù)據(jù)庫的字符集不會改變原有數(shù)據(jù)表的字符集)utf8:ALTER DATABASE `數(shù)據(jù)庫` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ALTER TABLE `數(shù)據(jù)表` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci gbk (包含gb2312):ALTER DATABASE `數(shù)據(jù)庫` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci ALTER TABLE `數(shù)據(jù)表` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci
文章標(biāo)題:mysql怎么用utf8的簡單介紹
文章起源:http://www.ef60e0e.cn/article/dodcgcj.html