هل استخدام Be64 لتشفر النص العربي قبل ارساله لقاعدة البيانات جيد لان php لا يرسل النص العربي
ام هناك طرق افضل و اكثر تقدما لاني استخدم حاليا Be64
استخدام Base64 لتشفير النصوص قبل إرسالها إلى قاعدة البيانات ليس الحل الأفضل و لكنه أحيانا قد يكون حلا مؤقتا لبعض الحالات. وتوجد طرق أفضل للتعامل مع النصوص العربية في PHP وقواعد البيانات.
حيث ان Base64 هو طريقة لترميز البيانات الثنائية إلى سلسلة من الأحرف للنقل عبر بروتوكولات مثل HTTP. لكنه لا يحل مشكلة ترميز النصوص نفسها. وعند إرسال النصوص العربية باستخدام Base64 يتم تحويل النص إلى شكل قابل للنقل ولكنه سيستهلك مساحة أكبر من النص الأصلي بسبب طريقة الترميز مما قد يؤثر على الأداء وحجم البيانات في قاعدة البيانات.
فمثلا
أهلا بالعالم
يتم تحويلها إلى النص التالي :
2KPZh9mE2Kcg2KjYp9mE2LnYp9mE2YU=
والحل الأفضل هو إستخدام ترميز UTF-8 حيث أنه ترميز عالمي يدعم جميع الحروف في اللغات المختلفة بما فيها اللغة العربية ومن الأفضل التعامل مع النصوص العربية باستخدامه.
لذلك تأكد من أن قاعدة البيانات الخاصة بك تدعم ترميز UTF-8 فالأمر التالي لإنشاء قاعدة بيانات تدعم utf8 :
CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
وعند إنشاء جدول يفضل جعل الأعمدة التي باللغة العربية تدعم utf8 :
CREATE TABLE my_table ( id INT AUTO_INCREMENT PRIMARY KEY, name_ar VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci );
وإذا كنت تستخدم PDO في PHP يجب الإتصال بقاعدة البيانات والسماح ب utf8 هكذا :
$pdo = new PDO( 'mysql:host=hostname;dbname=defaultDbName;charset=utf8mb4', 'username', 'password' );
التعليقات