【发布时间】:2012-04-24 21:05:51
【问题描述】:
我正在使用 DomDocument 使用 PHP 生成一个 XML 文件,并且我需要处理亚洲字符。我正在使用 pdo_mssql 驱动程序从 MSSQL2008 服务器中提取数据,并将 utf8_encode() 应用于 XML 属性值。只要没有特殊字符,一切正常。
服务器是 MS SQL Server 2008 SP3
数据库、表和列排序规则都是SQL_Latin1_General_CP1_CI_AS
我使用的是 PHP 5.2.17
这是我的 PDO 对象:
$pdo = new PDO("mssql:host=MyServer,1433;dbname=MyDatabase", user123, password123);
我的查询是一个基本的 SELECT。
我知道将特殊字符存储到 SQL_Latin1_General_CP1_CI_AS 列中并不是很好,但理想情况下最好不更改它就使其工作,因为其他非 PHP 程序已经使用该列并且它工作正常。在 SQL Server Management Studio 中,我可以正确看到亚洲字符。
考虑到以上所有细节,我应该如何处理数据?
【问题讨论】:
-
你试过
utf8_encode()吗?根据手册:Encodes an ISO-8859-1 string to UTF-8. -
当然,这就是我目前正在做的,但亚洲字符显示为“?”。即使我只是运行 SELECT 然后将数据放入文件中(无论是否为 utf8_encode),亚洲字符也会以“?”结尾。在文件中。
-
令我惊讶的是,您实际上能够在
LATIN1中编码亚洲字符。LATIN1仅用于编码欧洲字符...
标签: php xml sql-server-2008 encoding utf-8