7

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 の値を正しく取得するにはどうすればよいですか?

ヒント - データベースでは何も変更できません。

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 に答える