I have been trying to solve this for more than a week.
I have a MySQL database utf8_general_ci.
When I print the result in JSON formate using php, the characters are not UTF8 encoded.
The values stored in the database are in arabic language
Here is the code I'm using
db.php
<?php
$DBhost = "xx.xx.xx.x";
$DBusername = "username";
$DBpassword = "password";
$db_name = "bdname";
$connect = mysql_connect("$DBhost", "$DBusername", "$DBpassword")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
?>
and code to print the results are
Show.php
<?php
include('db.php');
$tbl_name = "table_name";
mysql_set_charset('utf8');
$sth = mysql_query("SELECT * FROM $tbl_name");
$rows = array();
while($r = mysql_fetch_assoc($sth)) {
$rows[] = array_map('utf8_encode', $r);
}
print json_encode($rows);
?>
Example of the output:
[{"id":"4","news_id":"1","caption":"\u00c3\u0083\u00c3\u008e\u00c3\u0088\u00c3\u0087\u00c3\u0091 \u00c3\u0087\u00c3\u00a1\u00c3\u0088\u00c3\u0098\u00c3\u00a6\u00c3\u00a1\u00c3\u0089 \u00c3\u0087\u00c3\u00a1\u00c3\u00a3\u00c3\u008f\u00c3\u0091\u00c3\u0093\u00c3\u00ad\u00c3\u0089 \u00c3\u0087\u00c3\u00a1\u00c3\u008e\u00c3\u0087\u00c3\u00a3\u00c3\u0093\u00c3\u0089 \u00c3\u00a1\u00c3\u009f\u00c3\u0091\u00c3\u0089 \u00c3\u0087\u00c3\u00a1\u00c3\u009e\u00c3\u008f\u00c3\u00a3"
What I understood from my search that the /u00 is a latin1 and the UTF8 should start with /u0 not two 0.
Tried different methods for converting latin1 to UTF8 like iconv and decode_json , changing the mysql_set_charset to latin1 and even removing it, added html header using UTF8,latin1 and windows-1526 charset also the same results and sometime i get null result for the caption output.
I'm out of options here and really don't know what to do
any idea ?