2016-07-29 6 views
0

json_encode()で配列を印刷すると、アラビア語のユーザー名が表示されません。これらのユーザー名を正しく表示するにはどうすればよいですか?私は、クエリbeforphp json_encode()がアラビア文字でヌルを表示する

mysql_query("SET NAMES 'utf8'"); 

を使用する場合

$cnx = mysqli_connect("localhost", "root", "pass", "databasename"); 
$data = mysqli_query($cnx, "SELECT userid,username FROM user"); 
$getalluser = array(); 
while ($row = mysqli_fetch_array($data)) 
    $getalluser[] = array($row[ "username" ], 
         "http://localhost/test/image.php?u=" . $row[ "userid" ], 
         $row[ "username" ]); 
echo json_encode($getalluser); 

が、結果はこの\u00ca\u00c7\u00e3\u00d1

私はPHP 5.2


現時点でのソリューションを使用していますように示し、iconv()を使用

コンソールであなたのデータベースに変更
$users[] = array(iconv('windows-1256', 'utf-8', ($row[ "username" ])), 
         "http://localhost/386/image.php?u=" . $row[ "userid" ], 
         iconv('windows-1256', 'utf-8', ($row[ "username" ]); 
+0

mysqlの代わりにmysqliを使用するには、mysql_query( "SET NAMES 'utf8'"); 'ではなく、' mysqli_set_charset($ cnx、 'utf8'); '行が必要です。 – julp

+0

@julpありがとう兄弟私は 'iconv()'を使って結果を 'utf'に変換しました。とてもうまく動作しています – user3745594

+0

私は理解できません:mysqli_set_charsetの目的です)、UTF-8で既に存在するはずのものをUTF-8で変換するにはどうすればいいですか?あなたのデータは、最初にデータベースに「壊れていますか? (つまり、SET NAMESがINSERTで見つからない) – julp

答えて

0

試してみてください。

ALTER TABLE 'user' MODIFY 'username' VARCHAR(32) CHARACTER SET utf8; 

VARCHAR()関数内の文字のカスタム長さを設定します。

、あなたにすべての非常に最初にPHP:動作するはずです

header('Content-Type: text/html; charset=utf-8'); 

を。

+0

おかげで兄弟だが、私のデータベース上のテーブルを編集したり変換したりしたくないのですが、解決策が必要な場合や、PHPコードでのみ編集する場合 – user3745594

+0

ユーザテーブルは 'utf8_general_ci'です – user3745594

+0

問題はJSONですが、答えはありません。 JSONは何も変更しません。utf8などのファイルエンコーディングに依存します。 – nikomaster

関連する問題