2009-06-12
周海汉/文
php程序是utf-8的,sqlserver是2005中文,内码是gb18030. 普通的mssql_connect无法设置内码转换,读出来的数据在utf-8页面显示乱码。ADO可以用 new COM(“ADODB.Connection”, NULL, CP_UTF8)//65001 这样的语句来实现正确转换。但ADO对php的支持缺乏文档。而有个开源的adodb,文档较为丰富。
其中对不同数据库驱动,设置UTF-8的方法还不一样,如下:
- For all drivers
- ‘persist’, ‘persistent’, ‘debug’, ‘fetchmode’, ‘new’
-
- Interbase/Firebird
- ‘dialect’,’charset’,’buffers’,’role’
-
- M’soft ADO
- ‘charpage’
-
- MySQL
- ‘clientflags’
-
- MySQLi
- ‘port’, ‘socket’, ‘clientflags’
-
- Oci8
- ‘nls_date_format’,’charset’
- For all drivers ‘persist’, ‘persistent’, ‘debug’, ‘fetchmode’, ‘new’ Interbase/Firebird ‘dialect’,’charset’,’buffers’,’role’ M’soft ADO ‘charpage’ MySQL ‘clientflags’ MySQLi ‘port’, ‘socket’, ‘clientflags’ Oci8 ‘nls_date_format’,’charset’
其中,Ado可以使用charPage这个属性来设置uft-8,类似new COM的方式。但发现当将AdoNewConnection($dbdriver)的$dbdriver设为’ado’或’ado_mssql’时,其传 进去的database被替换为provider。那database的名字如何设置呢?一直没找到办法。
$dbdriver=’ado://sa:cvttdev@172.16.22.40/sqloledb?charpage=65001’;
其格式是’driver://user:passwd@host/database?options[=value]
但没解决设置数据库名字的地方。
痛苦了很久,只能找到如下的办法解决:
- </head>
- <?php
- $dbdriver=’ado_mssql’;
- $server=’192.168.22.40’;
- $user=’sa’;
- $password=’passwd’;
- $DATABASE=’sugarcrm_db’;
- $database=’sqloledb’;
- //$dbdriver=’ado://sa:cvttdev@172.16.22.40/sqloledb?charpage=65001’;
- $myDSN=”PROVIDER=MSDASQL;DRIVER={SQL Server};SERVER={172.16.22.40};DATABASE=sugarcrm_db;UID=sa;PWD=cvttdev;”;
-
- include(‘adodb5/adodb.inc.php’);
- $db = ADONewConnection($dbdriver); # eg ‘mysql’ or ‘postgres’
- $db->debug = true;
- $db->charPage =65001;
- //$db->Connect($server, $user, $password, $database);
- $db->Connect($myDSN);
-
- //error:mssql server not support codes below
- //$db->Execute(“set names ‘utf8’”);
- echo “before query”;
- $rs = $db->Execute(‘select * from accounts’);
- print “<pre>”;
- print_r($rs->GetRows());
- print “</pre>”;
- ?>
- </body>
- </html>
如非注明转载, 均为原创. 本站遵循知识共享CC协议,转载请注明来源
FEATURED TAGS
css
vc6
http
automake
linux
make
makefile
voip
乱码
awk
flash
vista
vi
vim
javascript
pietty
putty
ssh
posix
subversion
svn
windows
删除
编译
多线程
wxwidgets
ie
ubuntu
开源
c
python
bash
备份
性能
scp
汉字
log
ruby
中文
bug
msn
nginx
php
shell
wordpress
mqueue
android
eclipse
java
mac
ios
html5
js
mysql
protobuf
apache
hadoop
install
iocp
twisted
centos
mapreduce
hbase
thrift
tutorial
hive
erlang
lucene
hdfs
sqoop
utf8
filter
草原
yarn
ganglia
恢复
scrapy
django
fsimage
flume
tail
flume-ng
mining
scala
go
kafka
gradle
cassandra
baas
spring
postgres
maven
mybatis
mongodb
https
nodejs
镜像
心理学
机器学习
Keras
theano
anaconda
docker
spark
akka-http
json
群论
区块链
加密
抽象代数
离散对数
同余
欧拉函数
扩展欧几里德算法
ES6
node-inspect
debug
win10
vscode
挖矿