基於需要測試PHP程式在遠端資料庫(MySQL)的讀寫,所以陸續申請了幾個空間。
有申請這系列的:700megs、blackapplehost、hoxtme。

但是都碰到了撈資料時,網頁變成亂碼。
這個問題交叉測試了好久,最後才發現與資料庫連線的需設定為網站的語系(也就是utf-8、big5)。
一般php資料庫連線會另外建立一個與資料庫連線的檔案,在每個需要與資料庫關聯時在用require_once函式引入。

幾個可能的處理方式:

1.資料庫連線時的資料傳遞語系設定

ok,下面將連線檔案資料po上來(是用dreamweaver產生的)

<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname = "localhost"; //伺服器名稱,通常都用localhost即可,除非該空間能夠支援遠端連入資料庫
$database = "database_name";
$username = "user";
$password = "pass";
$connServer = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
?>

後面加上

<?php

# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname = "localhost"; //伺服器名稱,通常都用localhost即可,除非該空間能夠支援遠端連入資料庫
$database = "database_name";
$username = "user";
$password = "pass";
$connServer = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_query('SET NAMES utf8',$connServer);
mysql_query('SET CHARACTER_SET_CLIENT=utf8',$connServer);
mysql_query('SET CHARACTER_SET_RESULTS=utf8',$connServer);


?>

當然語系也可以改為big5或其他語系。
測試連線亂碼問題好久,最後才發現這樣才成功。
本來以為只用:
mysql_query("SET NAMES 'UTF8'");
mysql_query("SET CHARACTER SET UTF8");
mysql_query("SET CHARACTER_SET_RESULTS=UTF8");
以為這樣就好,所以就沒再測試這部份,結果測了好久 0rz...

2.將網站語系改變
在一般html的網站時,記得要有下列這行
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
而這裡的語系也要跟資料庫的文字編碼相同。

而php的網站則可以在最前端加入下列這行
<?    header('Content-type:text/html; charset=utf-8');  ?>
道理相同。


3.資料庫編碼設定
網路截圖教學
這部份就看上面這網站設定即可。
基本上用phpmyadmin,或是從資料庫匯出以後,將sql碼用記事本開啟以後,將語系以取代的方式修改,再重新在匯入即可。

自己的空間還可以在mysql資料夾內,一般預設在c:\program files\mysql\內,而xampp則為在x:\xampp\mysql\bin下的my.ini檔案內加入:

[mysqld]
lower_case_table_names=1
default-character-set=utf8
log_bin_trust_routine_creators = 1

也是設定資料庫編碼,這邊紀錄一下。


基本上這幾個方式處理後就沒問題囉。
大夥兒試試。

以上




創作者介紹

一陣嘻,噓!

ezcshi 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • 訪客
  • 多謝你! 找好久解決方式!!我終於解決問題了Y_Y