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


Posted in PHP onJune 11, 2009

但导到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 ???浼?绀炬???ュ??浜? 629487
1d270085-a588-9ea7-584c-4a2f2c8d1a5b Fabriqu茅 Interation氓l 79436
23 中文
36ea2575-fe34-61b0-e5ae-4a2f2c791d22 Berufskolleg f眉r Elektrotechnik 65790
3834261a-fd48-9d4a-be40-4a2f2c5fc256 Berufskolleg f眉r Elektrotechnik 529523
52c9652c-82c8-ec2b-72ae-4a2f2c3a58d6 ???浼?绀炬???ュ??浜? 42138
78931a0e-f582-f406-8a56-4a2f2c3741b0 But茅e Torique 700010
989473f7-6b7b-fed3-12a1-4a2f2c320645 A.B.?便?€?????ゃ?炽??181212
b4579151-55cb-5ae4-a5f1-4a2f2c173b18 B眉nde-Mitte 203765
d72c42c9-9e1d-b926-d931-4a2f2c2a3100 Berufskolleg f眉r Elektrotechnik 27682
e97002f1-035f-91d3-4592-4a2f2f780e01 zhh

其中,23 ID的编码是GB2312的,其余是utf-8的。

而使用odbc则跟使用mssql_connect效果一样。

<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 = 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,"sa","cvttdev",SQL_CUR_USE_ODBC ); 

$query=odbc_do($connid,"select id,name from accounts"); 
?> 
<table border="1"> 
<tr><th>ID</th><th>Title</th> 
</tr> 
<?php 
while(odbc_fetch_row($query)) 
{ echo '<tr>'; 
$name = odbc_result($query,2); 
$id=odbc_result($query,1); 
echo '<td>'. $id .'</td>'; 
echo '<td>'. $name .'</td>'; 
echo '</tr>'; 
} 
?> 
</table>

查询结果:

ID Title
114b0775-d9b2-db90-fcda-4a2f2cd7cdbd 株式会社未来商事 629487
1d270085-a588-9ea7-584c-4a2f2c8d1a5b Fabriqué Interationål 79436
23 ����
36ea2575-fe34-61b0-e5ae-4a2f2c791d22 Berufskolleg für Elektrotechnik 65790
3834261a-fd48-9d4a-be40-4a2f2c5fc256 Berufskolleg für Elektrotechnik 529523
52c9652c-82c8-ec2b-72ae-4a2f2c3a58d6 株式会社未来商事 42138
78931a0e-f582-f406-8a56-4a2f2c3741b0 Butée Torique 700010
989473f7-6b7b-fed3-12a1-4a2f2c320645 A.B.ケアブレイン��?181212
b4579151-55cb-5ae4-a5f1-4a2f2c173b18 Bünde-Mitte 203765
d72c42c9-9e1d-b926-d931-4a2f2c2a3100 Berufskolleg für Elektrotechnik 27682
e97002f1-035f-91d3-4592-4a2f2f780e01 zhh

因为odbc 也没有设置内码页的地方。

PHP 相关文章推荐
PHP新手NOTICE错误常见解决方法
Dec 07 PHP
php&amp;mysql 日期操作小记
Feb 27 PHP
PHP中文分词 自动获取关键词介绍
Nov 13 PHP
浅析PHP页面局部刷新功能的实现小结
Jun 21 PHP
php获取从百度搜索进入网站的关键词的详细代码
Jan 08 PHP
php使用类继承解决代码重复的问题
Feb 11 PHP
刷新PHP缓冲区为你的站点加速
Oct 10 PHP
PHP实现对二维数组某个键排序的方法
Sep 14 PHP
php.ini中date.timezone设置详解
Nov 20 PHP
详解PHP变量传值赋值和引用赋值变量销毁
Mar 23 PHP
PHP进阶学习之命名空间基本用法分析
Jun 18 PHP
Laravel 登录后清空COOKIE的操作方法
Oct 14 PHP
php 分页类 扩展代码
Jun 11 #PHP
PHP 输出简单动态WAP页面
Jun 09 #PHP
Windows PHP5和Apache的安装与配置
Jun 08 #PHP
phpMyAdmin 安装配置方法和问题解决
Jun 08 #PHP
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
Jun 08 #PHP
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
Jun 08 #PHP
Windows IIS PHP 5.2 安装与配置方法
Jun 08 #PHP
You might like
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
php foreach循环中使用引用的问题
2013/11/06 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
Yii2中事务的使用实例代码详解
2016/09/07 PHP
关于javascript 回调函数中变量作用域的讨论
2009/09/11 Javascript
jQuery 使用手册(二)
2009/09/23 Javascript
JSQL SQLProxy 的 php 版本代码
2010/05/05 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
js中for in语句的用法讲解
2015/04/24 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
angular4实现tab栏切换的方法示例
2017/10/21 Javascript
jQuery实现弹窗下底部页面禁止滑动效果
2017/12/19 jQuery
Vue中错误图片的处理的实现代码
2019/11/07 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
python 网络爬虫初级实现代码
2016/02/27 Python
详解python3中zipfile模块用法
2018/06/18 Python
opencv之为图像添加边界的方法示例
2019/12/26 Python
python 计算方位角实例(根据两点的坐标计算)
2020/01/17 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
HTML5地理定位实例
2014/10/15 HTML / CSS
Myprotein瑞典官方网站:畅销欧洲英国运动营养品牌
2018/01/22 全球购物
大学生毕业自我评价范文分享
2013/11/11 职场文书
政风行风评议整改方案
2014/09/15 职场文书
小学向国旗敬礼活动方案
2014/09/27 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
会计简历自我评价
2015/03/10 职场文书
昆虫记读书笔记
2015/06/26 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
Python中seaborn库之countplot的数据可视化使用
2021/06/11 Python
SpringBoot快速入门详解
2021/07/21 Java/Android
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle