محمود موسى2 نشر 29 يناير 2021 أرسل تقرير نشر 29 يناير 2021 شباب عندي textarea في موقعي المفروض بيتم إستخدام emojis فيها. ف في قاعدة بيانات mysql عملت ترميز الداتابيز والجدول utf8mb4_unicode_ci وتم تخزينهم بشكل صحيح في الداتا بيز من غير أي مشاكل. المشكلة كانت عندي في عرض الemojis من الداتا بيز.. بعد ما عرضتها في صفحتي ظهرت على هيئة علامات إستفهام ؟؟؟ بستخدم في موقعي PDO وعملت في الخيارات PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'" وصفحة الموقع شغالة بutf-8 بس برضو المشكلة متحلتش. المهم لقيت حل على stackoverflow بإني أخزنهم ب base64_encode وأعرضهم ب base64_decode والطريقة نجحت فعلا واشتغلت السؤال بقا هل الbase64 هيفرق في الآداء أو التخزين ولا لا أو هل فيه حل تاني؟ وشكرا💛 اقتباس
0 Sam Ahw نشر 29 يناير 2021 أرسل تقرير نشر 29 يناير 2021 مرحباً @محمود رضا موسى، يتم استخدام Base64 بشكل شائع لترميز البيانات الثنائية (على سبيل المثال ، الصور أو ملفات الصوت) للتضمين في HTML و CSS والمستندات النصية الأخرى. بالإضافة إلى ذلك ، يتم استخدام Base64 لتشفير البيانات التي قد تكون غير مدعومة أو تالفة أثناء النقل أو التخزين أو الإخراج. ولكن لسوء الحظ، على الرغم من أن Base64 طريقة فعالة نسبيًا لتشفير البيانات الثنائية ، إلا أنها ستزيد في المتوسط حجم الملف لأكثر من 25٪. لا يؤدي هذا إلى زيادة النطاق Bandwidth فحسب ، بل يؤدي أيضًا إلى زيادة وقت تحميل الملفات. ولكن بما أنك تستخدمها فقط لأيقونات صغيرة الحجم نسبياً فذلك لن يسبب لك أي مشكلة، ولن تشعر بفارق كبير. كما وأن العديد من المواقع تستخدم حالياً Base64 أثناء التعامل مع Emojis أرفق لك أيضاً صورة توضيحية للمقارنة بين حجم نفس الصورة مع وبدون الترميز لتوضيح الفكرة. بالتوفيق اقتباس
0 Mohammed Abu Yousef نشر 29 يناير 2021 أرسل تقرير نشر 29 يناير 2021 مرحبا عزيزي محمود الوقت المستغرق في الترميز نفسه ليس هو المشكلة حقًا. يعد Base64 أكثر تعقيدًا ، لكن الترميز لن يظل عبئًا كبيرًا. المشكلة الحقيقية هي الوقت المنقضي في نقل البيانات عبر الشبكة ، والذي يعتمد على الحجم المشفر للبيانات. تقوم Base64 بتوسيع حجم البيانات مقارنة بالشكل الثنائي بمقدار الثلث. لذا سيكون حجم ملف 40 ميغابايت حوالي 53 ميغابايت. يضاعف Hex encoding حجم البيانات ، لذا سيكون حجم الملف 40 ميغابايت 80 ميغابايت. لذلك باختصار Base64 هي الأفضل تحياتي اقتباس
0 سمير عبود نشر 29 يناير 2021 أرسل تقرير نشر 29 يناير 2021 مرحباً محمود، لقد أجبتك مُسبقاً على سؤالك في المساهمة الماضية، ينقصك النُقطة الرابعة التي ذكرتها هنا: عمل set للترميز الخاص بالإتصال لهذا الترميز: utf8mb4 ظننت أنك تستخدم mysqli لكن بما أنك تستخدم pdo يُمكنك تغيير الترميز بهذا الشكل: <?php $conn = new PDO('mysql:host=your-hostname;dbname=your-db;charset=utf8mb4', 'your-username', 'your-password', array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci" )); بالتوفيق. 1 اقتباس
السؤال
محمود موسى2
شباب عندي textarea في موقعي المفروض بيتم إستخدام emojis فيها.
ف في قاعدة بيانات mysql عملت ترميز الداتابيز والجدول utf8mb4_unicode_ci وتم تخزينهم بشكل صحيح في الداتا بيز من غير أي مشاكل.
المشكلة كانت عندي في عرض الemojis من الداتا بيز.. بعد ما عرضتها في صفحتي ظهرت على هيئة علامات إستفهام ؟؟؟
بستخدم في موقعي PDO وعملت في الخيارات
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"
وصفحة الموقع شغالة بutf-8 بس برضو المشكلة متحلتش.
المهم لقيت حل على stackoverflow بإني أخزنهم ب base64_encode وأعرضهم ب base64_decode والطريقة نجحت فعلا واشتغلت
السؤال بقا هل الbase64 هيفرق في الآداء أو التخزين ولا لا أو هل فيه حل تاني؟ وشكرا💛
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.