iT邦幫忙

0

Mysql新增修改寫入變亂碼

https://ithelp.ithome.com.tw/upload/images/20210126/20111572XffDI91eBA.jpg
以前還沒重灌電腦與安裝XAMPP時Mysql新修寫入都不會出現亂碼,現在匯入以前的資料表,跑一樣的程式做查詢新增跟修改,寫入後發現全部變亂碼,如圖顯示,請問大家 這相關問題有什麼解決方式...

ccutmis iT邦高手 4 級 ‧ 2021-01-26 17:51:46 檢舉
Try Google Search "mysql database character set 亂碼"
Nick iT邦新手 5 級 ‧ 2021-01-27 22:28:17 檢舉
我是少了 $conn->set_charset("utf8");
補上後就解決了,太久沒有寫PHP都生疏掉了

2 個回答

3

存入後字元亂碼,一般都是字元編碼不統一造成的。

而字元編碼統一需要注意一下

mysql的部份。
需要注意的資料庫及資料表的字元編碼要用utf8的編碼
在程式裏記得要做set names utf8

程式的檔案編碼叫得也得是utf8無bom的。
一般目前用編輯器的比較不會有這問題。擔心的是用記事本非plus的。其檔案編碼會是big5
也有機會造成此問題。

最後要注意的是html的編碼也得是utf8。
如果儲存的東西是由html傳送的。更要注意。

以上三大原則處理好後,就不會再發生這樣的問題。

Nick iT邦新手 5 級 ‧ 2021-01-27 22:26:19 檢舉

我解決這個問題了
多了這個就好了
$conn->set_charset("utf8");

我只能說,你只是暫時性的解決你當前的問題
如果不了解我上面的原則。未來你還是會在痛苦一次的。

要注意我說的基本原則。不要能用就好。

0
maxmas
iT邦新手 4 級 ‧ 2021-01-27 09:13:39

針對你的問題,首先請先確認你的資料庫的每個資料表的儲存編碼都定義為utf8_general_ci,如果不是請改為utf8_general_ci

你匯出的舊資料表檔案格式若是sql,或是其它文字格式,請使用如Emeditor之類的,支援編碼格式的文字編輯器軟體讀取,確認讀取進來的內容,不會顯示亂碼,如果是亂碼,表示編輯器現在使用的編碼與你的文件本身不符合,請手動更改編碼後重新讀入,讀取正確後,請將文件存為UTF-8格式,不要加BOM

然後你再匯入你現在的資料庫就不會有問題了

你的程式在連線資料庫前,要先執行三個語法
SET NAMES utf8
SET CHARACTER_SET_CLIENT=utf8
SET CHARACTER_SET_RESULTS=utf8
定義你讀取或存入資料的編碼都是utf8

你的網頁表單都要定義為utf-8,並且檔案編碼也要存為utf-8,
這樣就不會有任何編碼不同的問題了

Nick iT邦新手 5 級 ‧ 2021-01-27 22:27:12 檢舉

我少了這個...後來有補上就解決了,謝謝

我要發表回答

立即登入回答