首頁  >  文章  >  web前端  >  從gb到utf-8_經驗交流

從gb到utf-8_經驗交流

WBOY
WBOY原創
2016-05-16 12:10:041729瀏覽

現在不少中文網站的編碼都在從gb2312轉換成utf-8編碼。其中出現了不少問題在這裡總結一下:

前提:

保證所有的文件保存的時候都是utf-8編碼的,而不是ansi

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

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

使用dreamweaver編輯靜態檔案時,那麼將檔案的charset標籤修改成utf-8: <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />改為 <meta http-equiv="Content-Type" content="text/html; 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") <code>Set objStream = Server.CreateObject("ADODB.Stream") <br>    With objStream <br>    .Open <br>    .Charset = "utf-8" <br>    .Position = objStream.Size <br>    .LoadFromFile server.mappath("sc.htm")<br>    wstr = .ReadText<br>    .Close <br>    End With <br>Set objStream = Nothing<br>     With objStream Set objStream = Server.CreateObject("ADODB.Stream") <br>    With objStream <br>    .Open <br>    .Charset = "utf-8" <br>    .Position = objStream.Size <br>    .WriteText=wstr <br>    .SaveToFile server.mappath("wz/sc_" & classid & ".htm"),2  <br>    .Close <br>    End With <br>Set objStream = Nothing     .Open

    .Charset = "utf-8"

    .Position = objStreamStream.Size

    .Position = objStreamStream.Size

    wstr = .ReadText

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

Set objStream = Nothing

 使用stream寫入檔案    With objStream     .Open <code><?php mysql_query("SET NAMES 'utf8'"); ?>    .Charset = "utf-8"     .Position = objStream.Size   .mappath("wz/ sc_" & classid & ".htm"),2      .Close
    End With

Set objStream = Nothing php篇
php與access連接:

在windows主機上使用php的com擴充功能可以連接access資料庫,在建立ADODB.Connection的時候指定代碼頁參數為65001
<?php <BR>$conn = new COM("ADODB .Connection",NULL,65001) or die("ADO connect failed!");<br>$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查詢:

<?php<BR>require_once('adodb/adodb.inc.php'); <BR>$conn =& ADONewConnection('ado_access'); <BR>$conn->charPage ='65001';<br>//$conn->charPage = 65001;<br>//$conn->debug = true;<br>$dsn = sprintf("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= %s",realpath('2data.mdb'));<br>// $dsn = sprintf("Driver={Microsoft Access Driver (*.mdb)};Dbq=%s",realpath("data.mdb"));<br>$conn->Connect($dsn); 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_nectionacter_set_nection-conectioner_set_conectioner_set了nectionacter_set_nection。 使用adodb類: 設定'charpage' 屬性為65001;<?php <🎜>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);
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn