PHPを使用してデータベースに接続し、ほとんどの文字列を取得しています。特殊文字のPHP UTF8エンコードの問題
$res = sqlsrv_query($conn,$query);
$array_req = array();
while($rs = sqlsrv_fetch_object($res)){
// Get info request
$temp_req = array();
$temp_req['id'] = $rs->id;
$temp_req['title'] = utf8_decode($rs->title);
...
}
echo json_encode(array('result'=>$array_req));
によって:私はこれをやって取得する場合、これらの文字列は...それゆえ、彼らは「E」、「C」、「U」、などをたくさん持っている、
ポルトガル語で書かれた文章ですそうすることutf8_decode「ç」のような文字は「?」で置き換えられます。例えば。私がデコードをしないと、テキストはデータベースに正しく格納されているので、すべて正常です。しかし、私がデコードをしないと、json_encodeはヌルという文字列を取得します。
どのように文字を保持しますか?私はすでに試しましたmb_convert_encoding、htmlspecialchars、何も動作していないようです。
EDIT:このスクリプトはAndroidアプリからリクエストされていました。しかし、私はブラウザでテストしていましたが、実際にUTF8で文字列をエンコードし、フラグが付いたjsonを送信すると思われます。JSON_UNESCAPED_UNICODE下記のように解決されますが、ブラウザはまだ悪い文字を返します。
$res = sqlsrv_query($conn,$query);
$array_req = array();
while($rs = sqlsrv_fetch_object($res)){
// Get info request
$temp_req = array();
$temp_req['id'] = $rs->id;
$temp_req['title'] = utf8_encode($rs->title);
...
}
echo json_encode(array('result'=>$array_req), JSON_UNESCAPED_UNICODE);
DBテーブルではどの文字セットを使用していますか? – Peter
JSONはUTF-8であると考えられていますので、デコードする必要はありません。どこでNULLを取得していますか – RiggsFolly
まだhttps://stackoverflow.com/questions/279170/utf-8-all-the-way-throughが重複している可能性がある場合は、これを参照してください。 –