来自MySQL的乌尔都语/阿拉伯语字体数据显示为?????在JSON中

时间:2017-01-17 21:04:54

标签: php android json utf-8 urdu

我正在我的网络服务器上使用Urdu / Arabic数据存储在MySQL数据库中开发一个Android应用程序,并使用JSON_Encoding生成JSON字符串。然后在Android应用程序中使用JSON字符串来执行各种功能(使用数据填充RecyclerView和其他视图对象)。我能够将Urdu / Arabic数据存储在MySQL数据库中,但是当我使用PHP脚本生成JSON时,包含Urdu字符的所有字段都显示数据为??????

我正在使用utf8mb4_unicode_ci,因为我读到这很容易存储非英文数据并执行多个功能,但在这个编码问题之后,我已经将其更改为utf8_general_ci,用于MySQL数据库中的所有表和字段。下面是我用来从MySQL生成JSON字符串的PHP脚本:

<?php

require "conn.php";

mysqli_query("SET NAMES 'utf8'"); 
mysqli_query('SET CHARACTER SET utf8'); 

$sql_qry = "SELECT * FROM countrybasic;";

$result = mysqli_query($conn, $sql_qry);

$response = array();

while($row = mysqli_fetch_array($result)){
    array_push($response, array("id"=>$row[0],"name"=>$row[1],"capital"=>$row[2],"continent"=>$row[3],"population"=>$row[4],"gdp"=>$row[5]));
}

echo json_encode(array("server_response"=>$response));

mysqli_close($conn);
?>

名称和大写字段是我存储我的乌尔都语数据的字段。

请帮我解决这个问题。

感谢。

4 个答案:

答案 0 :(得分:1)

  1. 使用排序规则 utf8mb4_unicode_ci 创建您的表 [countrybasic],并使名称列具有相同的排序规则。
  2. 现在插入一些不同语言的示例数据。
  3. 使用 MySQLi 查询结果获取数据。

注意:如果您在排序规则不同时保存数据并在更改排序规则后获取该数据,则该数据将无法正确获取。

我希望这会奏效。

答案 1 :(得分:0)

您只需将Charset更改为UTF8,您就可以使用这些行来完成PHP:

$statSQL= 'SET CHARACTER SET utf8'; 

mysqli_query($your_db,$sSQL) 
or die ('charset in DB didn\'t change'); 

我希望这有帮助:)

答案 2 :(得分:0)

$CONNECTION = mysqli_connect($host,$user,$password,$database);
// Check connection
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
   mysqli_query ($CONNECTION ,"set character_set_results='utf8'"); 
$queryutf8 = "select * from yourtable";
$res_utf8  = mysqli_query($CONNECTION ,$queryutf8 );

答案 3 :(得分:0)

需要更改wamp服务器中默认的utf8 查看以下链接了解更多详情。

Arabic characters doesn't show in phpMyAdmin