来自 MySQL 的乌尔都语/阿拉伯语字体数据显示为 ??????在 JSON
Urdu / Arabic font data from MySQL is displaying as ????? in JSON
我正在开发一个 Android 应用程序,其中 Urdu/Arabic 数据存储在我的网络服务器上的 MySQL 数据库中,并使用 JSON_Encoding 生成 JSON 字符串. JSON 字符串随后在 Android 应用程序中用于执行各种功能(使用数据填充 RecyclerView 和其他视图对象)。我可以将乌尔都语/阿拉伯语数据存储在 MySQL 数据库中,但是当我使用 PHP 脚本生成 JSON 时,所有包含乌尔都语字符的字段都将数据显示为 ?????? ?
我正在使用 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);
?>
名称和大写字段是我存储乌尔都语数据的字段。
请帮我解决这个问题。
谢谢。
您只需将字符集更改为 UTF8,您可以使用 PHP 这些行来完成此操作:
$statSQL= 'SET CHARACTER SET utf8';
mysqli_query($your_db,$sSQL)
or die ('charset in DB didn\'t change');
希望对您有所帮助:)
$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 );
- 使用排序规则 utf8mb4_unicode_ci 创建您的 table [countrybasic] 并使用相同的排序规则创建名称列。
- 现在插入一些不同语言的示例数据。
- 使用MySQLi查询结果获取数据。
注意:如果您在排序规则不同时保存数据并在更改排序规则后获取该数据,则该数据将无法正确获取。
我希望这会奏效。
您需要更改wamp服务器中的默认utf8
查看下面的 link 了解更多详情。
Arabic characters doesn't show in phpMyAdmin
我正在开发一个 Android 应用程序,其中 Urdu/Arabic 数据存储在我的网络服务器上的 MySQL 数据库中,并使用 JSON_Encoding 生成 JSON 字符串. JSON 字符串随后在 Android 应用程序中用于执行各种功能(使用数据填充 RecyclerView 和其他视图对象)。我可以将乌尔都语/阿拉伯语数据存储在 MySQL 数据库中,但是当我使用 PHP 脚本生成 JSON 时,所有包含乌尔都语字符的字段都将数据显示为 ?????? ?
我正在使用 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);
?>
名称和大写字段是我存储乌尔都语数据的字段。
请帮我解决这个问题。
谢谢。
您只需将字符集更改为 UTF8,您可以使用 PHP 这些行来完成此操作:
$statSQL= 'SET CHARACTER SET utf8';
mysqli_query($your_db,$sSQL)
or die ('charset in DB didn\'t change');
希望对您有所帮助:)
$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 );
- 使用排序规则 utf8mb4_unicode_ci 创建您的 table [countrybasic] 并使用相同的排序规则创建名称列。
- 现在插入一些不同语言的示例数据。
- 使用MySQLi查询结果获取数据。
注意:如果您在排序规则不同时保存数据并在更改排序规则后获取该数据,则该数据将无法正确获取。
我希望这会奏效。
您需要更改wamp服务器中的默认utf8 查看下面的 link 了解更多详情。
Arabic characters doesn't show in phpMyAdmin