7

我对 mssql 的数据库查询有一个烦人的问题。如果结果包含像德语“ä”这样的特殊字符,我无法使用json_encode正确获取 json 格式的结果。

json_last_error返回5等于JSON_ERROR_UTF8。我猜数据库不会以UTF-8编码返回值。数据库集合是 *Latin1_General_CI_AS* 并且受影响的列是varchars

php mssql.charset配置无效。

我读到 mysql 用户可以用来mysql_query('SET CHARACTER SET utf8');正确编码返回值。我该怎么做才能正确获取 mssql 的值?

提示 - 我无法更改数据库中的任何内容。

4

2 回答 2

13

在 JSON 编码之前,请utf8_encode()在字符串周围使用。

于 2013-08-15T07:52:25.380 回答
1

您也可以在连接中设置它:

$result = sqlsrv_connect($hostname, array(
    'UID' => $username,
    'PWD' => $password,
    'Database' => $database,
    "CharacterSet" => "UTF-8"   // <---- here the magic happens 
));

对我来说,这是更简单的方法。

于 2018-06-04T19:59:08.173 回答