отправлять и получать арабские данные из базы данных MySQL

Я хочу получить арабские данные из базы данных MySQL Я написал код PHP, но это дает мне ????? по арабским данным любая помощь, чтобы сделать это Wokrs ??

<?php header('Content-Type: charset=utf-8');
$link=mysqli_connect("localhost","root","","arabicd");
mysql_set_charset('utf8',$link);
if (mysqli_connect_errno($link))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

mysql_query("SET character_set_results = 'utf8'");
mysql_query("character_set_client = 'utf8'");
mysql_query("character_set_connection = 'utf8'");
mysql_query("character_set_database = 'utf8'");
$result = mysqli_query($link,"SELECT question,answer FROM ask ");
while ($row = mysqli_fetch_array($result))
{
$output[]=$row;
}
print(json_encode($output));

if($data){
echo $data;
}
mysqli_close($con);
?>

1

Решение

  • Хотя вы можете просто использовать set names utf8 вместо всех этих жутких запросов, здесь нет ничего плохого в арабском, ура 🙂
  • Вы смешиваете mysql_* а также mysqli_* что не разрешено
  • Даже если это разрешено использовать mysql mysqli соединения взаимозаменяемы, вы передаете параметрыquery функции в порядке, отличном от ожидаемого
  • Вы должны выйти из сценария в случае сбоя соединения (или сделать что-либо, просто измените поток выполнения)
  • Эта линия print(json_encode($output)); подвержен ошибкам, что, если нет результатов, полученных из таблицы? цикл никогда не будет введен и $output не будет определен, поэтому вы должны инициализировать $output с пустым массивом также рекомендуется проверять, является ли набор результатов пустым, и обрабатывать его в отдельном блоке.
  • Кроме того, предпочтительно заключать имена таблиц и столбцы в обратные галочки (`) если столбец имеет имя зарезервированного ключевого слова

Вот рабочая версия вашего кода после исправления ошибок

<html>

<meta charset="utf-8">
<?php



$link = mysql_connect("localhost","root","");
if ($link === false)
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit;
}
mysql_select_db("arabicd", $link);
mysql_query("SET NAMES utf8");

$result = mysql_query("SELECT `ask`.`question`,`ask`.`answer` FROM `ask` ", $link);
$output = array();
while ($row = mysql_fetch_array($result))
{
$output[]=$row;
}

print(json_encode($output));

if(isset($data))
{
echo $data;
}

mysql_close($link);
?>
</html>
0

Другие решения

Нет, не используйте mysql интерфейс, использование mysqli,
Нет не пользуюсь SET NAMESиспользовать mysqli_set_charset,

Делать SHOW CREATE TABLE; вы, вероятно, обнаружите, что столбец, в который вы пытаетесь записать, CHARACTER SET latin, Это должно быть utf8.

Текст как \u0633 подразумевает, что вам нужно добавить JSON_UNESCAPED_UNICODE в качестве второго аргумента json_encode,

1

Используйте этот код в вашем PHP:

$db= mysqli_connect('localhost','root','225352','project');

$SQL= 'SET CHARACTER SET utf8';

mysqli_query($db,**$SQL**);)
or die ( mysqli_error($SQL) );
1

просто используйте это в своем теге на странице HTML ….

 meta http-equ = "Content-Type" content = "text / html; charset = UTF-8" />

использование < перед мета-словом

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector