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

كيفية تخزين الإيموجي في قاعدة البيانات بشكل صحيح

محمود موسى2

السؤال

السلام عليكم ❤

عندي في موقعي textarea مسموح للناس الكتابة بها وأريد السماح لهم بكتابة الإيموجيز

فعندما قمت بكتابة الإيموجي من خلال إيموجي ويندوز 10 عن طريق الضغط على زر windows+;

تمت الكتابة في الtextarea وظهرت بشكل صحيح ولكن عند عرضها في الموقع يظهر بعضها على شكل علامات إستفهام مقل الصورة والبعض يظهر بشكل صحيح

فما مشكلة هذا وكيف أعالجها؟

ولكم فائق الشكر والإحترام💚💚

قاغدة البيانات المستخدمة هي mysql وهو تطبيق ويب ليس اندرويد

Capture.PNG

بتاريخ 19 دقائق مضت قال محمود رضا موسى:

ولكم فائق الشكر والإحترام💚💚

كما ترون قد ظهرت هنا الإيموجي بشكل صحيح في سؤالي فكيف أعالج هذا؟

تم التعديل في بواسطة محمود رضا موسى
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

مرحباً محمود،

هناك جزئين في المُشكلة التي تُواجهها جزء التخزين و جزء العرض، حتى تقوم بتخزين الرموز التعبيرية في قاعدة البيانات بالشكل الصحيح 

  1. تغيير ترميز قاعدة البيانات:
    ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

     

  2. تغيير الترميز لجدول البيانات:
    ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

     

  3. مثال لإستعلام تخزين:

    INSERT INTO tasks (`body`, `project_id`)
    VALUES ('😜😀 Hdhdhdh😜😀😊😃hzhzhzzhjzj 😜😀😀😊', 2)

    emoji.thumb.JPG.c345ea3d8c7a83321e56cfae2ac4c963.JPG

  4. عمل set للترميز الخاص بالإتصال للترميز: utf8mb4 

    <?php
    
    $con = new mysqli($server, $user, $password, $database_name); 
    $con->set_charset('utf8mb4');

     

  5. عرض نتيجة الإستعلام:

    <?php
    
    $stmt = $conn->prepare("SELECT * from tasks"); // prepare the query
    $stmt->execute();
    $result = $stmt->get_result(); // get the mysqli result
    while($r = $result->fetch_assoc()) {
        echo "<p>{$r['body']}</p>";
    }

    result.JPG.d0e50380dcd145f4292828217ccce0bb.JPG

بالتوفيق.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

ما هي قاعدة البيانات التي تستعملها ؟ وهل نحن نتكلم عن تطبيق وب أم عن تطبيق جوال؟

على أية حال مشكلتك مشكلة encoding والحل هو اعتماد utf-8 encoding في التخزين في قاعدة البيانات وكذلك في اﻹظهار.

إذا أجبتنا عن اﻷسئلة أعلاه سنتمكن من مساعدتك بشكل أفضل ﻷن text encoding/decoding له خوارزمية واحدة ولكن الكود يختلف باختلاف لغات البرمجة وقواعد البيانات

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 2 دقائق مضت قال أحمد حبنكة:

ما هي قاعدة البيانات التي تستعملها ؟ وهل نحن نتكلم عن تطبيق وب أم عن تطبيق جوال؟

على أية حال مشكلتك مشكلة encoding والحل هو اعتماد utf-8 encoding في التخزين في قاعدة البيانات وكذلك في اﻹظهار.

إذا أجبتنا عن اﻷسئلة أعلاه سنتمكن من مساعدتك بشكل أفضل ﻷن text encoding/decoding له خوارزمية واحدة ولكن الكود يختلف باختلاف لغات البرمجة وقواعد البيانات

تم تعديل السؤال يا اخي الكريم

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 20 دقائق مضت قال محمود رضا موسى:

كيف أعالجها؟

السلام عليكم

يجب عليك فعل ما يلي:

  1. انشاء قاعدة بيانات الcollation الخاص بها utf8mb4_unicode_ci و الcharset يكون utf8mb4.
  2. الجدول الذي تقوم بتخزين الايموجيز فيه يجب أن يكون الcollation الخاص به utf8mb4_unicode_ci والcharset يكون utf8mb4.
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

مرحبا محمود،

يكون شكل ترميز emojis بهذه الطريقة:

u+1F60A

وهي نفسها مستخدمة في مختلف أنظمة التشغيل.

لكي نستعملها في مواقع الويب يجب أولا أن تدعم صفحة HTML الترميز UTF-8 بوضع التعليمة التالية في قسم head في أول الصفحة:

<meta charset="UTF-8">

في حال لم يتم ترجمة ترميو الرمز تلقائيا يجب تغعيل دالة جافاسكربت أو php (مثلما تريد) لاستبدال جزء النص +U بالتالي:

&#x

u+1F60A => &#x1F60A;

المثال السابق يعرض الفرق بين كيفية تخزين رمز تعبيري و طريقة تحويله لكي يُعرض في صفحة ويب.

مع إضافة فاصلة منقوطة لنهاية الترميز.

استخدم دالة جاهزة مثل replace.

مثال لعمل الترميز:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>

<h1>Sized Emojis</h1>

<p style="font-size:48px">
&#128512; &#128516; &#128525; &#128151;
</p>

</body>
</html>

بالتوفيق

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 دقيقة مضت قال Wael Aljamal:

مرحبا محمود،

يكون شكل ترميز emojis بهذه الطريقة:


u+1F60A

وهي نفسها مستخدمة في مختلف أنظمة التشغيل.

لكي نستعملها في مواقع الويب يجب أولا أن تدعم صفحة HTML الترميز UTF-8 بوضع التعليمة التالية في قسم head في أول الصفحة:


<meta charset="UTF-8">

في حال لم يتم ترجمة ترميو الرمز تلقائيا يجب تغعيل دالة جافاسكربت أو php (مثلما تريد) لاستبدال جزء النص +U بالتالي:


&#x

u+1F60A => &#x1F60A;

المثال السابق يعرض الفرق بين كيفية تخزين رمز تعبيري و طريقة تحويله لكي يُعرض في صفحة ويب.

مع إضافة فاصلة منقوطة لنهاية الترميز.

استخدم دالة جاهزة مثل replace.

مثال لعمل الترميز:


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>

<h1>Sized Emojis</h1>

<p style="font-size:48px">
&#128512; &#128516; &#128525; &#128151;
</p>

</body>
</html>

بالتوفيق

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 7 دقائق مضت قال محمود رضا موسى:

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

هل قمت بتغيير الcollation و الcharset؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ الآن قال محمود رضا موسى:

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

استخدم عملية الطباعة الجزئية في كل مرحلة من التطبيق لتعرف في أي لحظة يتوقف دعم البيئة لعملية حفظ الترميز.

ربما إضافة الجزئية التالية لـ HTML form الذي يرسل البيانات سيحل المشكلة:

accept-charset="utf-8"

<form action="/action_page.php" accept-charset="utf-8">
  <label for="fname">First name:</label>
  <input type="text" id="fname" name="fname"><br><br>
  <input type="submit" value="Submit">
</form>

كي لايتم إرسال البيانات بترميز مختلف.

ولحل المشكلة من طرف PHP قم بوضع الترويشة في بداية ملفات php بعد وسم الفتح مباشرة:

<?php
header('Content-type: text/plain; charset=utf-8');

بالتوفيق

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...