從gb到utf-8_經驗交流

來源:互聯網
上載者:User
現在不少中文網站的編碼都在從gb2312向utf-8編碼轉化。其中出現了不少問題在這裡總結一下:

前提:

保證所有的檔案儲存的時候都是utf-8編碼的,而不是ansi

具體設定:如果使用的是文字編輯器,那麼在儲存檔案的時候就有一個編碼選擇(圖1) 將其選擇成UTF-8就可以了。

如果是使用的dreamweaver那麼就麻煩一點。

使用dreamweaver編輯靜態檔案時,那麼將檔案的charset標籤修改成utf-8: 改為 然後選擇另存新檔這時候dream會將檔案儲存為utf-8編碼的

註:如果使用的是access資料庫那麼只需要以上兩步就可以了,access本身採用utf-8編碼。

asp篇

字碼頁設定:

asp檔案的第一行: <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 改成: <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> 這也直接決定了asp 通過ado訪問資料庫採用的編碼。
註:如果使用的是access資料庫那麼只需要以上兩步就可以了,access本身採用utf-8編碼。

如果使用了模板程式

通常的模板程式,通過fso對象來讀寫檔案。但是這種方式沒法支援utf-8,需要改成stream對象來讀寫檔案,下面是幾行關鍵的代碼:
使用stram讀檔案
Set objStream = Server.CreateObject("ADODB.Stream")
With objStream
.Open
.Charset = "utf-8"
.Position = objStream.Size
.LoadFromFile server.mappath("sc.htm")
wstr = .ReadText
.Close
End With
Set objStream = Nothing
使用stream寫檔案 Set objStream = Server.CreateObject("ADODB.Stream")
With objStream
.Open
.Charset = "utf-8"
.Position = objStream.Size
.WriteText=wstr
.SaveToFile server.mappath("wz/sc_" & classid & ".htm"),2
.Close
End With
Set objStream = Nothing

php篇

php與access串連:

在windows主機上 使用php的com擴充可以串連access資料庫,在建立ADODB.Connection的時候 指定字碼頁參數為65001

$conn = new COM("ADODB.Connection",NULL,65001) or die("ADO connect failed!");
$rs = new COM("ADODB.RecordSet") or die("ADO recordset fail"); $conn->open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb");
$rs = $conn->Execute("select * from data");
while not $rs->EOF
echo $rs->Fields['title']->value;
?>

php 與mysql串連

與mysql資料庫建立好串連後首先執行以下SQL查詢:

mysql手冊 關於set names 的說明 SET NAMES顯示用戶端發送的SQL語句中使用什麼字元集。因此,SET NAMES 'cp1251'語句告訴伺服器“將來從這個用戶端傳來的資訊採用字元集cp1251”。它還為伺服器發送回用戶端的結果指定了字元集。(例如,如果你使用一個SELECT語句,它表示列值使用了什麼字元集。)
SET NAMES 'x'語句與這三個語句等價:

mysql> SET character_set_client = x;
mysql> SET character_set_results = x;
mysql> SET character_set_connection = x;
將x設定為character_set_connection也就設定了collation_connection是x的預設校對規則。

使用adodb類:

設定'charpage' 屬性為65001;

require_once('adodb/adodb.inc.php');
$conn =& ADONewConnection('ado_access');
$conn->charPage ='65001';
//$conn->charPage = 65001;
//$conn->debug = true;
$dsn = sprintf("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= %s",realpath('2data.mdb'));
// $dsn = sprintf("Driver={Microsoft Access Driver (*.mdb)};Dbq=%s",realpath("data.mdb"));
$conn->Connect($dsn);
  • 相關文章

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.