mysql數據庫漢字亂碼解決方案


修改所有編碼(三碼合一):文件編碼,頁面編碼聲明,數據庫字符集

 

此次將所有編碼都設為utf-8,以eclipse for PHP為例:

修改文件編碼

可將eclipse編碼設置為utf-8,具體過程如下

 

 

將使用到的文件類型的編碼修改為utf-8,然后點擊update

 

頁面編碼聲明

在PHP頁面的<?php ?>標簽對之間使用

header('Content-type : text/html; Charset=UTF-8');

 聲明頁面編碼為utf-8 html頭部

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

來聲明頁面編碼為utf-8

 

數據庫字符集

查看當前數據庫編碼:

show variables like '%char%';

 

 

show variables like'collation_%';

 

 

utf8mb4utf8的超集,所以這樣的設置也能正常插入漢字。一般情況下出問題的地方為character_set_databasecharacter_set_server的值為latin1

那么我么可以修改數據庫配置文件(my.ini),5.7后沒有這個配置文件:

在[client]節點下添加

default-character-set=utf8

在[mysqld]節點下添加

character-set-server=utf8 
collation-server=utf8_general_ci 

修改完后重新啟動mysql,再次查看數據庫編碼,就可以看到character_set_databasecharacter_set_server的值都變為utf8

 

修改數據庫,數據表和字段的編碼:

修改數據庫編碼格式:

alter database <數據庫名> character set utf8;

修改數據表編碼格式:

alter table <表名> character set utf8;

修改字段編碼格式:

alter table <表名> change <字段名> <字段名> <類型> character set utf8;

例:

alter table user change username username varchar(20) character set utf8 not null;

(修改user表中的username字段的編碼格式為utf8)。

 

但是如果要對所有字段一個一個進行設置,確實是挺麻煩的,那么怎么一次性完成對表中所有字段的編碼設置呢,emmmmmm.......看下面:

alter table <表名> convert to character set utf8;

 

修改過后,不會對原本的數據生效,新插入的才會生效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM