很高興,在 PHP 的學習過程中可以學到 PDO 的技巧。
根據書本中的範例,逐一建置 MySQL 的資料庫,並引入相關參考數據到資料表中;可以正常抓取到資料並顯示出來,這其中當然也包含有中文字。
[補充說明一下,範例中的資料庫、字碼的設定及抓資料的程式碼存檔,都是以 UTF-8 處理。]
<?php
try
{
// 設定 MySQL 資料庫的 DSN
$dsn = 'mysql:host=localhost;dbname=ch18;';
$user = 'daniel';
$password = '123456';
// 建立 PDO 物件
$pdo = new PDO($dsn, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 設定 MySQL 資料庫的字元編碼
$pdo->query('set character set utf8');
可能是試做很順利,所以就想到是不是也可以抓取現有使用的MSSQL資料庫?
於是,就改寫原本的程式碼:
首先,
先入有關 HTML 的相關標籤,在 <?php … ?> 之前,並在 ?> 之後,補入 </body></html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>IEDB01-iepa00h</title>
</head>
<body>
再來是修改讀取 MSSQL 的相關設定
// 設定 MSSQL 資料庫的 DSN
$dsn = 'mssql:host=localhost;dbname=DB01;';
$user = 'sa';
$password = 'DB20120604';
// 建立 PDO 物件
$pdo = new PDO($dsn, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
並將 設定 MySQL 資籿庫的字元編碼指令加以關閉 (對於 MSSQL 該指令無效 !!)
//$pdo->query('set character set utf8');
此時,心想這樣應該一切順利了。不料,程式可以運行,但果結並確不符理想。
怎會這樣 ?? 後來想到,MSSQL Server 當時建置的時候,是選定 Chinese_Taiwan_Stroke & Binary,會不會和內碼有關?
所以,就修正的 HTML 的字碼值
<meta http-equiv="Content-Type" content="text/html; charset=big5" />
沒有留言:
張貼留言