php MsSql server时遇到的中文编码问题
前端之家收集整理的这篇文章主要介绍了
php MsSql server时遇到的中文编码问题,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
但导到sqlserver 2005后,发现其中文编码只支持GB 和 UCS-2(unicode 16),所以直接在数据库中查询显示正确,但使用PHP的utf9编码显示时则全是乱码。
找了大量资料,什么使用mssql,freetds,odbc,ado或直接每次查询和写入都进行转码等建议都有。不过实际测试中,发现Ado这种方法是好用的。
代码如下:
<div class="codetitle">@H_404_3@<a style="CURSOR: pointer" data="18435" class="copybut" id="copybut18435" onclick="doCopy('code18435')"> 代码如下:
<div class="codebody" id="code18435">
<
Meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<?
PHP //print("The next line generates an error.
");
//printaline("PLEASE?");
//print("This will not be displayed due to the above error.");
?> <?
PHP $conn = new COM("ADODB.Connection",NULL,CP_UTF8) or die("Cannot start ADO");
//access
数据库的打开方式
//$conn->Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=$db");
//$conn->Open("DRIVER={Microsoft Access Driver (
.mdb)}; DBQ=$db");
$conn->Open("Driver={sql Server};Server={192.168.22.40};Database=sugarcrm_db;UID=sa;PWD=123456;") ;
// 执行查询并输出数据
$rs = $conn->Execute('SELECT FROM accounts') or die ("error query");
?>
<table border="1">
<tr>
ID | Title | </tr>
<?
PHP while (!$rs->EOF) {
echo '<tr>';
echo '<td>'. $rs->Fields['id']->Value .'</td>';
echo '<td>'. $rs->Fields['name']->Value .'</td>';
echo '</tr>';
$rs->MoveNext();
}
?>
</table>
<?
PHP // 释放资源
$rs->Close();
$conn->Close();
$rs = null;
$conn = null; ?>
<
Meta http-equiv="Content-Type" content="text/html; charset=utf-8">
PHP //print("The next line generates an error.
");
//printaline("PLEASE?");
//print("This will not be displayed due to the above error.");
?>
PHP //$conn = odbc_pconnect("myodbc","sa","cvttdev",0);
//$connstr="DRIVER=Microsoft Access Driver (*.mdb);DBQ=".realpath("mydb.mdb");
$connstr="Driver={
sql Server};Server={192.168.22.40};Database=sugarcrm_db;UID=sa;PWD=123456;";
$connid=odbc_connect($connstr,
sql_CUR_USE_ODBC );
$query=odbc_do($connid,"select id,name from accounts");
?>
IDTitle |
PHP
while(odbc_fetch_row($query))
{ echo '$name = odbc_result($query,2);
$id=odbc_result($query,1);
echo 'echo ' | echo ' |
}
?>