اذهب إلى المحتوى

السؤال

نشر (معدل)

تحيه طيبه للجميع 

لدي مشروع فلاتر مرتبط بقاعدة بيانات mysql  

أحاول عرض البيانات للمستخدمين التي تم تخزينها مسبقا على قاعدة البيانات ولكن المشكلة ان الكلمات العربية تظهر على شكل استفهام ؟؟؟؟؟ بشكل هذا

ما هو الحل لجعل النصوص العربية تظهر بشكل الصحيح ياليت اذا احد لديه فكره يفيدنا

الكود المستعمل كالتالي:

 _fetchData() async {
    var response = await http.get(
        Uri.parse('http://localhost/HRMS.php'),
        headers: {"Accept": "application/json"});

    setState(() {
      var convertDataToJson = json.decode(response.body);
      data = convertDataToJson['result'];
      txtName = data[0]['Name'];


log(txtName);
    });
  }

 

مع العلم انني قمت بستعمل الطريقة التالية ولكن بدون فأئده :

 String body = utf8.decode(response.bodyBytes);
      print(body);

 

بنسبة الى كود PHP

<?php

header('access-control-allow-origin: *');
header('Access-Control-Allow-Headers: *');

require_once 'connt.php';


$sql="SELECT * FROM employees  
 INNER JOIN tEmployeeNAME   ON employees.IdEmployeeNAME  = tEmployeeNAME .IdEmployeeNAME 

$stmt = $con->prepare($sql); 

$stmt->execute();

$result = $stmt->get_result();


$array = array();

while ($row  = mysqli_fetch_assoc($result))
{
	$array[] = $row;
}

echo ($result) ?
json_encode(array("code" => 1, "result"=>$array)) :
json_encode(array("code" => 0, "message"=>"Data not found !"));


?>

 

شكرا لكم

تم التعديل في بواسطة مروان مروان3

Recommended Posts

  • 0
نشر
  بتاريخ On 20‏/1‏/2022 at 19:27 قال بلال زيادة:

هل ترميز الحقول في قاعدة البيانات utf8mb4_unicode_ci ؟ 

أظهر المزيد  

مرحبا اخي الكريم

نعم قمت بتجربة 

utf8mb4_unicode_ci

 وايضا 

utf8_general_ci 

والاثنين نفس المشكله 

مع العلم اني استعمل فلاتر ويب 

  • 1
نشر
  بتاريخ On 20‏/1‏/2022 at 19:30 قال مروان مروان3:

مرحبا اخي الكريم

نعم قمت بتجربة 

utf8mb4_unicode_ci

 وايضا 

utf8_general_ci 

والاثنين نفس المشكله 

مع العلم اني استعمل فلاتر ويب 

أظهر المزيد  

هل يمكنك تحويل ترميز الريسبونس إلى utf8 عن طريق 

String body = jsonDecodeUtf8(response.bodyBytes);

أو يمكنك إضافة الدالة utf8.decode  إلى response.bodyBytes كما في الطريقة التالية

json.decode(utf8.decode(response.bodyBytes))

إذا لم ينجح ذلك تأكد من شكل الريسبونس الي راجع من api و يكون بالعربية. 

 

  • 0
نشر
  بتاريخ On 20‏/1‏/2022 at 22:49 قال Wael Aljamal:

حاول استخدام التعليمة التالية في بداية ملف PHP

ini_set('default_charset', 'utf-8');

أو قم بتعديل ملف php.ini في ملف السيرفر لجعل ترميز النصوص utf8

عدل السطر:

default_charset = "utf-8"

وأعد تشغيل المخدم لديك.

أظهر المزيد  

اهلا اخي الكريم

شكرا لك اخي نعم الحل ناجح تم حل المشكلة

للفائدة الكود كامل اصبح كالتالي:

 

<?php



require_once 'con.php';


$sql="SELECT * FROM Users";

$con -> set_charset("utf8");

$stmt = $con->prepare($sql); 


$stmt->execute();

$result = $stmt->get_result();


$array = array();

while ($row  = mysqli_fetch_assoc($result))
{
	$array[] = $row;
}


echo ($result) ?
json_encode(array("code" => 1, "result"=>$array)) :
json_encode(array("code" => 0, "message"=>"Data not found !"));


?>

 

  بتاريخ On 20‏/1‏/2022 at 19:46 قال بلال زيادة:

هل يمكنك تحويل ترميز الريسبونس إلى utf8 عن طريق 

String body = jsonDecodeUtf8(response.bodyBytes);

أو يمكنك إضافة الدالة utf8.decode  إلى response.bodyBytes كما في الطريقة التالية

json.decode(utf8.decode(response.bodyBytes))

إذا لم ينجح ذلك تأكد من شكل الريسبونس الي راجع من api و يكون بالعربية. 

 

أظهر المزيد  

كل الشكر لك اخي الكريم تم حل المشكلة وارفق الحل في المشاركة للفائدة

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...