在我们的网络应用程序中,我们使用 PHP5.2.6 + PDO 连接到 SQL Server 2005 数据库并存储俄语文本。
数据库排序规则是Cyrillic_General_CI_AS
,表排序规则是Cyrillic_General_CI_AS
,列类型为NVARCHAR(MAX)
.
我们尝试使用以下两种方案连接到数据库,这两种方案都会导致不同的问题。
-
PDO sql:
$dbh = new PDO ('mssql:host='.$mssql_server.';dbname='.$mssql_db, $mssql_login, $mssql_pwd);
在这种情况下,像这样的简单查询的结果:
SELECT field1 FROM tbl1 WHERE id=1
shows field1
数据被截断为 255 字节。
-
PDO odbc:
$dbh = new PDO ('odbc:DSN=myDSN;UID='.$mssql_login.';PWD='.$mssql_pwd);
在这种情况下,同一查询的结果显示完整的未截断的数据,但带有问号而不是俄语符号。
Notes:
- 在 SQL Management Studio 中,数据不会被截断,并且俄语符号也能正确显示。
- 我们有 Windows 2003 企业版 SP2
那么我们应该选择什么连接方式以及如何解决相应的问题呢?
尝试执行SET NAMES "charset"
连接后。
我不知道要匹配什么字符集Cyrillic_General_CI_AS
是,但是试试“西里尔字母”?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)