我对mssql的数据库查询有一个恼人的问题。如果结果包含像德语'ä‘这样的特殊字符,我就不能使用json_encode来正确地获得json形式的结果。
json_last_error返回等于JSON_ERROR_UTF8的5。我猜数据库不会以UTF-8编码的形式返回值。数据库集合是*Latin1_General_CI_AS*,受影响的列是varchars。
php mssql.charset配置不起作用。
我读到mysql用户可以使用mysql_query('SET CHARACTER SET utf8');
对返回值进行正确编码。要为mssql正确获取值,我可以做些什么?
提示-我不能更改数据库中的任何内容。
发布于 2013-08-15 15:52:25
在进行JSON编码之前,请在字符串周围使用utf8_encode()
。
发布于 2018-06-05 03:59:08
你也可以在你的连接中设置这个:
$result = sqlsrv_connect($hostname, array(
'UID' => $username,
'PWD' => $password,
'Database' => $database,
"CharacterSet" => "UTF-8" // <---- here the magic happens
));
对我来说,这是一种更简单的方式。
https://stackoverflow.com/questions/18247737
复制相似问题