【发布时间】:2013-04-12 11:41:13
【问题描述】:
我的项目基于 PHP 构建并连接到 MS SQL Server。我正在使用 sqlsrv 库。 MS SQL 中的字段类型是 nvarchar。当我定义连接参数时,我还输入了“utf8”。它是:
global $cnf;
$cnf = array();
$cnf["mssql_user"] = "xxx";
$cnf["mssql_host"] = "xxx";
$cnf["mssql_pw"] = "xxx";
$cnf["mssql_db"] = "xxx";
$cnf["CharacterSet"] = "**UTF-8**";
将记录插入数据库时,我使用越南语内容和中文内容:
$city = iconv('UTF-8', 'utf-16le', $post['city']);
$params = array(array($city, null, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_BINARY)));
$sql= "INSERT INTO tblCityGarden (city) VALUES(?)
$stmt = sqlsrv_query( $this->dbhandle, $sql, $params);
越南文和中文插入数据OK(越南文和中文数据库中存储的数据是正确的)。
但是,当我将记录加载回网络时,会出现奇怪的字符 (?, �)。 我尝试了一些 php 作为 iconv、mb_detect_encoding、mb_convert_encoding 并在互联网上搜索了许多结果,但它无法正常工作。如何显示正确的数据
请有经验的人解决这个问题
【问题讨论】:
-
您是否尝试过使用两个不同的连接数组分别插入两种编码类型?那么标准插入的 UTF-8 连接,然后是中文和越南插入的单独 utf-16le 连接?
-
刚注意到这是一个旧帖子(呵呵)
标签: php