Re: [請益] phpmyadmin 中文顯示亂碼

作者: weiclin (CC)   2016-04-16 01:10:44
※ 引述《latria (silly)》之銘言:
: 各位好,
: 我知道亂碼問題已有許多討論串,
: 我也爬過文了
: 可是問題還是不知道出在哪裡><
: 如果有漏爬還請多多見諒
: 問題:
: 於"網頁"輸入中文至"phpmyadmin",於"phpmyadmin"檢視,中文呈現為"亂碼"
: 於 "網頁" 檢視,中文呈現為"正常"
: 於"phpmyadmin"輸入中文至"網頁",於 "網頁" 檢視,中文呈現為"問號"
: 於"phpmyadmin"檢視,中文呈現為"正常"
: 截圖:
: 網頁 http://imgur.com/Y8HUZfw
: phpmyadmin http://imgur.com/Wrupaky
: 開發環境是Cloud9,用 MySQL 連結 phpmyadmin
: 已確認過
: 1.html是否加上
: <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
: 2.form表單是否加上
: header("Content-Type:text/html; charset=utf-8");
: 3.phpmyadmin資料庫,資料表,欄位編碼皆已設為utf8_general_ci
: 4.連結資料庫的檔案也有加上mysql_query("SET NAMES 'UTF8'");
: 5.也有將php.ini的檔案做修改
: http://imgur.com/zoPeaYs
: 以下是程式碼截圖
: http://imgur.com/a/oFT10
: 先謝謝大家
因為沒玩過 cloud9, 剛剛去弄了帳號順便測試你的問題
結果我也遇到了 xD 這邊列一下我怎樣設定讓它正常運作的
這兩個是基本要的:
1. 建資料表時使用 utf8mb4_general_ci
2. html header裡加上 <meta charset="UTF-8">
這邊的方法擇一即可
1. 修改 /etc/mysql/my.cnf
a) 在 [client] 底下加一行 default-character-set=utf8
b) 在 [mysqld] 底下加一行 character-set-server=utf8
2. 使用 PDO:
new PDO("mysql:host=localhost;dbname=c9;charset=utf8", "xxxxx", "xxxxx");
3. 使用 mysqli:
$mysqli = new mysqli("localhost", "xxxxx", "xxxxx", "c9");
$mysqli->set_charset("utf8");
或是非物件的方式:
$mysqli = mysqli_connect("localhost", "xxxxx", "xxxxx", "c9");
mysqli_set_charset($mysqli, "utf8");
根據 php 官方的文件 http://php.net/manual/en/mysqli.set-charset.php
不建議使用 "SET NAMES UTF8", 而是使用 set_charset 就夠了
這樣我在 phpmyadmin 裡面輸入的中文, 就可以正常顯示了
我沒有另外測試使用 php 寫入資料庫, 但應該也會正常了
作者: latria (silly)   2016-04-17 15:31:00
謝謝w大,已站內問題解決了,真的萬分感謝!!!
作者: IhaveASecret (人都有秘密)   2016-04-19 21:02:00
我都是用 1 的方式

Links booklink

Contact Us: admin [ a t ] ucptt.com