資料庫中的數據是亂碼
『壹』 資料庫亂碼怎麼解決
展開快訊
登錄
首頁
專欄
問答
沙龍
快訊
團隊主頁
開發者手冊
智能鈦AI
在線學習中心
TVP
返回騰訊雲官網
徹底解決Mysql中文亂碼
mysql是我們項目中非常常用的數據型資料庫。但是因為我們需要在資料庫保存中文字元,所以經常遇到資料庫亂碼情況。下面就來介紹一下如何徹底解決資料庫中文亂碼情況。
1、中文亂碼
1.1、中文亂碼
無法插入中文字元:
1.2、查看錶字元編碼
我們可以看到表的默認字元集是latin1.
所以我們在創建表的時候就需要指定表的字元集:
這樣在Linux裡面可以訪問並且可以插入與訪問這個表了。
1.3、資料庫與操作系統編碼
雖然在伺服器端可以顯示中文正常,但是在客戶端可能會顯示亂碼。因為我們的伺服器是UTF8。
而且資料庫的編碼也存在問題。
這里我們可以看character_sert_database與character_set_server的字元集都是latin1.那麼在mysql資料庫中,server,database,table的字元集都默認是latin1.下面我們就來看看如何解決mysql亂碼情況。
2、mysql設置變數的范圍
2.1、session范圍
查看資料庫編碼:
修改字元編碼:
我們可以看到字元集已經修改成都是utf8了。但是這里有一個問題,那就是我們重新打開一個命令窗口然後查看數據編碼就會出現下面的畫面:
『貳』 mysql出現亂碼問題如何解決
1、修改安裝文件根目錄下的my.ini文件:
搜索欄位default-character-set,設置其值為utf8/gbk之一(注意設置utf8的時候不能設成utf-8)
再去重啟MySQL伺服器
如果還是出現亂碼,接著執行下面操作
2、修改資料庫編碼
在安裝目錄的data目錄下找到你出現亂碼的資料庫對應的文件夾(這個文件夾即是你這個資料庫存放數據的地方),
進入找到db.opt文件(即此資料庫的編碼配置文件),修改值為下面的
default-character-set=gbk
default-collation=gbk_chinese_ci
再去重啟MySQL伺服器
如果還是出現亂碼,接著執行下面操作
3、再不行,備份原資料庫數據,直接drop掉這個資料庫
重新創建資料庫並設置編碼
create database yourDB character set gbk;
別忘了重啟MySQL伺服器綜上:如果還沒有解決,我也沒轍了。重裝吧,重裝的時候設置下編碼三處的編碼要一致
『叄』 怎樣解決MySQL中文顯示亂碼
MySQL中文亂碼問題解決方法
1.問題描述
當向 MySQL 資料庫插入一條帶有中文的數據時,會出現亂碼,即插入不成功或顯示時是亂碼。
2.問題原因分析
(1)可以先使用語句 show variables like 'character%';來查看當前資料庫的相關編碼集。
可以看到 MySQL 有六處使用了字元集,分別為:client 、connection、database、results、server 、system。其中與伺服器端相關:database、server、system(永遠無法修改,就是utf-8);與客戶端相關:connection、client、results 。
了解了上面的信息我們來分析下亂碼的原因,問題出在了當前的 CMD 客戶端窗口,因為當前的 CMD 客戶端輸入採用 GBK 編碼,而資料庫的編碼格式為 UTF-8,編碼不一致導致了亂碼產生。
3.解決方法
而當前 CMD 客戶端的編碼格式無法修改,所以只能修改 connection、 client、results 的編碼集來告知伺服器端當前插入的數據採用 GBK 編碼,而伺服器的資料庫雖然是採用 UTF-8 編碼,但卻可以識別通知伺服器端的 GBK 編碼數據並將其自動轉換為 UTF-8 進行存儲。可以使用如下語句來快速設置與客戶端相關的編碼集:set names gbk;
設置完成後即可解決客戶端插入數據或顯示數據的亂碼問題了,但我們馬上會發現這種形式的設置只會在當前窗口有效,當窗口關閉後重新打開 CMD 客戶端的時候又會出現亂碼問題;那麼,如何進行一個一勞永逸的設置呢?在 MySQL 的安裝目錄下有一個 my.ini 配置文件,通過修改這個配置文件可以一勞永逸的解決亂碼問題。在這個配置文件中 [mysql] 與客戶端配置相關,[mysqld] 與伺服器配置相關。默認配置如下:
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
這時只需要將下的默認編碼 default-character-set=utf8 改為 default-character-set=gbk ,重新啟動 MySQL 服務即可。
『肆』 php插入mysql資料庫亂碼
亂碼主要以下幾個原因:
1。數據表中,表本身的編碼 和 欄位編碼,均為UTF8。
2。在寫入數據等資料庫操作前,發送語句 'set names utf8'
3。PHP文件都是UTF8編碼,無簽名(無BOM)
4。頁面上使用header或<meta>保證輸出的頁面是UTF8編碼。<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
www.itcyly.com
鮮少老師
『伍』 為什麼從資料庫中讀出來中文的數據是亂碼
一般是web伺服器頁面的編碼與資料庫不一致導致
比如做一些設置<%@Language=JScript @CodePage=936%>
1,<%@codepage="65001"%>
2,< http-equiv="Content-Type" content="text/html; charset=UTF-8">
3,Session.CodePage = 65001
4,文件存成 UTF-8
大部分資料庫都支持以unicode編碼方式,
所以解決與資料庫之間的亂碼問題比較明智的方式是直接使用unicode編碼與資料庫交互。
很多資料庫驅動自動支持unicode,如Microsoft的SQLServer驅動。
其他大部分資料庫驅動,可以在驅動的url參數中指定,如mm的mysql驅動:
jdbc:mysql://localhost/WEBCLDB?useUnicode=true&characterEncoding=GBK。
『陸』 java從mysql資料庫讀出的中文是亂碼怎麼解決
根據下面這幾個步驟,選擇操作
①
首先把MySQL的服務停掉
在運行窗口輸入:net
stop
mysql
②
把伺服器和客戶端的字元集改成自己想用的字元集:GB2312或是utf8等……
具體操作為:打開mysql安裝目錄下的myini.tet;
找到default-character-set,將其改為自己想用的字元集:GB2312或是utf8等……,要注意的是這里有兩個default-character-set,用ctrl+f定位在文件最前面輸入default就會找到,都要改過來;
③
重啟MySQL伺服器,在運行窗口輸入:net
start
mysql
④
最重要的是一點是,到這里我們已經能夠解決亂碼問題了,可問題是我們依然還會出現亂碼問題,這是因為我們現在的表被創建的時候用的是默認的字元集(latin1),所以這時候我們要把表刪除,然後重建就可以了
『柒』 為什麼 資料庫提取中文是亂碼
從後台讀取數據時,通常會出現亂碼情況,比如「漢字」變成「?」等,造成這種情況的原因通常是編碼設置不對,解決方法如下:
第一種方法:在php中添加如下代碼,將編碼格式設為「utf-8」,代碼如下:
header("Content-Type: text/html; charset=UTF-8");
第二種方法:在php中添加另外一行代碼,同樣用來轉碼,代碼如下:
$conn = mysqli_connect($servername, $username, $password, $mysqlname);
$conn->query("SET NAMES utf8");
該種情況是先創建鏈接,之後再轉碼。
另外,在使用資料庫時,直接手動(非代碼)建表,通常會在表中輸入漢字時,瀏覽時無法顯示或顯示為「?」,造成這種情況的原因也是編碼問題,解決方案如下:
在建表或建庫時,表和庫的編碼格式一定要統一,設置成:「utf8_general_ci」,如下圖: