当前位置: 首页 > 图文教程 > 网络编程 > PHP > php MsSql server时遇到的中文编码问题

PHP
数据库相关问题
Oracle Faq(Oracle的版本)
[FAQ]PHP中的一些常识:类篇
第1次亲密接触PHP5(2)
ftp类(myftp.php)
PHP出错界面
对盗链说再见...
example2.php
3
PHP与javascript对多项选择的处理
用PHP创建PDF中文文档
用Socket发送电子邮件(利用需要验证的SMTP服务器)
PHP:风雨欲来 路在何方?
PHP的面向对象编程
提升PHP执行速度全攻略(下)
PHP中在数据库中保存Checkbox数据(2)
用在PHP里的JS打印函数
在线竞拍系统的PHP实现框架(一)
分页显示Oracle数据库记录的类之一
分页显示Oracle数据库记录的类之二

PHP 中的 php MsSql server时遇到的中文编码问题


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 299 ::
收藏到网摘: n/a

朋友要用sugarcrm的php读取Ms sql server的中文资料,因为其原始资料是Access 数据库,导到mysql不太方便。 但导到sqlserver 2005后,发现其中文编码只支持GB 和 UCS-2(unicode 16),所以直接在数据库中查询显示正确,但使用php的utf9编码显示时则全是乱码。
找了大量资料,什么使用mssql,freetds,odbc,ado或直接每次查询和写入都进行转码等建议都有。不过实际测试中,发现Ado这种方法是好用的。
代码如下:
复制代码 代码如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php
//print("The next line generates an error.<br>");
//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><th>ID</th><th>Title</th>
</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;
?>
</body>
</html>

查询结果(与使用sql server managment studio效果一样):
ID Title
114b0775-d9b2-db90-fcda-4a2f2cd7cdbd