الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]مشكلة في بيانات الجدول

بدأه هدف الشمالي في 9 مارس 2012 · 6 رد · 618 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الإخوة الكرام السلام عليكم ورحمة الله

قمت بإرسال البيانات إلى قاعدة بيانات بحروف عربية من صفحة php ومن برنامج مكتوب بالجافا بعد جهد جهيد وقد ساعدني الإخوة فلاحرمهم الله الأجر

وظنيت أن المشكلة إنتهت وإذا بي بعد الإستعلام وعرض جميع محتويات الجدول والتي أدخلتها بحروف عربية تظهر بهذا الشكل :

[{"name":"\u0639\u0631\u0628\u064a","grad":"\u0639\u0631\u0628\u064a"},{"name":"\u0639\u0631\u0628\u064a","grad":"\u0639\u0631\u0628\u064a"},{"name":"\u0639\u0631\u0628\u064a","grad":"\u0639\u0631\u0628\u064a"},{"name":"\u0639\u0631\u0628\u064a","grad":"\u0639\u0631\u0628\u064a"}]

وهذا كود الصفحة بعد حذف بعض بيانات الدخول وهي بترميز utf_8:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
<?php
header("Content-Type: text/html; charset=utf-8"); 
$data = "SELECT * FROM cc ;";


$con = mysql_connect('localhost','','');
mysql_select_db('asdcom_C') or die('prblem');
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
mysql_query("SET character_set_database=utf8");
mysql_query("SET character_set_results=utf8");
mysql_query("SET character_set_server=utf8");


$query  =  mysql_query($data );

   if($query)
    {
      while($e=mysql_fetch_assoc($query))
      $output[]=$e;


        print(mb_convert_encoding(json_encode($output),'utf8'));
      mysql_close();
       }
   else
   {
           print 'error';
   }
mysql_close($con);

?>
</body>
</html>

أرجو المساعدة ياإخوان فقد أتعبتني مشاكل الترميز .

تم تعديل هذه المشاركة بواسطة هدف الشمالي في 9 مارس 2012 في 15:18

#2

هل البيانات مخزنة بهذا الشكل في قاعدة البيانات؟ لأن php لن يفهمها بهذا الشكل، لأنه الشكل المستعمل في الجافا. php أصلا لا يدعم ال unicode، لأنه يخزن الحروف في 1 byte

اقتباس
A string is series of characters, where a character is the same as a byte. This means that PHP only supports a 256-character set, and hence does not offer native Unicode support. See details of the string type.

إذا كانت الكلمات مخزنة بهذا الشكل، فيمكنك تحويلها إلى هذا الشكل

NNNN

مثلا المحتوى الذي لديك سيصبح كالتالي

[{"name":"ع ر ب ي","grad":"عربي"},{"name":"عربي","grad":"عربي"},{"name":"عربي","grad":"عربي"},{"name":"عربي","grad":"عربي"}]
#3

لاياأخي الكلمات المخزنة بالعربي هي التي تظهر بالشكل السابق الذي ذكرته أنا ,

وبالنسبة لتحويل المحتوى إلى

NNNN

مالفائدة منه ؟

#4

واجهت مثل هذه المشكله , الحل الذي لجأت إليه هو تحويل ما أريد إرساله إلى base64 وأي لغه يمكنها التحويل من وإلى هذا الترميز وفي php قم بفك التشفير وتخزين البيانات إلا إذا كانت جافا تقوم بترميز الحروف قبل إرسالها فهذا أمر آخر :)

بالتوفيق

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#5

الحل :

$str='
[{"name":"\u0639\u0631\u0628\u064a","grad":"\u0639\u0631\u0628\u064a"},{"name":"\u0639\u0631\u0628\u064a","grad":"\u0639\u0631\u0628\u064a"},{"name":"\u0639\u0631\u0628\u064a","grad":"\u0639\u0631\u0628\u064a"},{"name":"\u0639\u0631\u0628\u064a","grad":"\u0639\u0631\u0628\u064a"}]
';

$converted = preg_replace('/\\\u([0-9a-z]{4})/i', '$1;', $str);
echo $converted;
1

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#6

جزاك الله ألف ألف خير , فعلًا الآن ظهر النص العربي بدون مشكلة .

#7

جرب تحفظ ملف PHP بترميز UTF-8 من خلال وضع الكود في المفكرة ثم حفظ بأسم ثم اختر نوع الترميز UTF-8

M.B.O

Mohamed Bin Othman

إبن المكلا

يابني البشر ماذا فعلتم بالبشر !!

إسـألـنـي

مواضيع مشابهة