在我们的网络应用程序中,我们使用PHP5.2.6 + PDO连接到SQL Server 2005数据库并存储俄语文本.
数据库整理是Cyrillic_General_CI_AS
,表格整理是Cyrillic_General_CI_AS
,列类型是NVARCHAR(MAX)
.
我们尝试使用以下两种方案连接到数据库,两者都会导致不同的问题.
PDO mssql:
$dbh = new PDO ('mssql:host='.$mssql_server.';dbname='.$mssql_db, $mssql_login, $mssql_pwd);
在这种情况下,这样的简单查询的结果:
SELECT field1 FROM tbl1 WHERE id=1
显示field1
截断为255个字节的数据.
PDO odbc:
$dbh = new PDO ('odbc:DSN=myDSN;UID='.$mssql_login.';PWD='.$mssql_pwd);
在这种情况下,同一查询的结果显示完整的非截断数据,但带有问号而不是俄语符号.
笔记:
在SQL Management Studio中,数据不会被截断,俄语符号也会正确显示.
我们有Windows 2003 Enterprise Edition SP2
那么我们应该选择什么作为连接方法以及如何解决相应的问题呢?