0

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

我在阅读时使用的是 utf8mb4_unicode_ci,这对于存储非英语数据和执行多种功能很容易,但是在这个编码问题之后,我已将 MySQL 数据库中所有表和字段的它更改为 utf8_general_ci。下面是我用来从 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);
?>

Name 和 Capital 字段是我存储乌尔都语数据的字段。

请帮我解决这个问题。

谢谢。

4

4 回答 4

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

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

我希望这会奏效。

于 2020-12-28T09:26:50.970 回答
0

您只需将 Charset 更改为 UTF8,您可以使用 PHP 的这些行来执行此操作:

$statSQL= 'SET CHARACTER SET utf8'; 

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

我希望这有帮助:)

于 2017-01-17T21:48:22.817 回答
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 );
于 2020-06-05T07:04:58.663 回答
0

您需要更改 wamp 服务器中的默认 utf8,查看以下链接以获取更多详细信息。

phpMyAdmin 中不显示阿拉伯字符

于 2021-05-20T13:35:23.457 回答