كيفية منع الأحرف غير ASCII من حفظها في قاعدة بيانات دروبال؟
سؤال
لقد لاحظت أنه في دروبال بعد أن يدخل بعض المستخدمين المحتوى في جسم العقدة ، يتم حفظ شخصيات مثل عروض الأسعار والرسائل المتحركة على النحو التالي: â € œ œ œ
هذا يرجع إلى أن المستخدم يدخل أحرفًا غريبة أو شيء من هذا القبيل ...
- هل هذا يعني أن قاعدة بيانات Drupal لم يتم تكوينها لـ UTF8؟
- كيف يمكن تصحيح هذا حتى يتم حفظها بالفعل على أنها عادل؟
تحديثتبين ، في حالتي ، كانت الشخصيات التي تم فك تشفيرها هي نتائج لتنزيل Drupal MySQL Dump التي يتم حفظها على أنها ASCII وتحميل ذلك في MySQL لإعادة توزيع قاعدة البيانات. حدث هذا مرتين ، مرة واحدة عندما هاجرت الاستضافة والمرة الثانية عندما أفسدت DB واضطررت إلى استعادة هو يدويًا.
الحل هو أنك تستخدم وحدة النسخ الاحتياطي Drupal و Migrate وتنزيل ملف النسخ الاحتياطي وعليك استعادة يدويًا هو تحويل الملف في Notepad أو أي شيء من ASCII إلى UTF8. لقد اختبرت هذا وهو يعمل.
المحلول
’ “
هو ترميز UTF-8 من ’ “
يسيء تفسيره على أنه Windows-1252 (ليس لاتيني -1).
هل هذا يعني أن قاعدة بيانات Drupal لم يتم تكوينها لـ UTF8؟
هذا احتمال واحد. البعض الآخر:
- البرنامج الذي يضع البيانات في قاعدة البيانات مكسورة.
- يتم كسر البرنامج الذي يسترجع البيانات من قاعدة البيانات.
نصائح أخرى
- هل هذا يعني أن قاعدة بيانات Drupal لم يتم تكوينها لـ UTF8؟
أود أن أقول إنه من المحتمل أن يتم تعيين جدول (جدول) قاعدة البيانات latin1
. إلق نظرة. بدلاً من ذلك ، يمكن أن يكون قاعدة البيانات الإتصال ليس UTF-8 مشفر (إرسال أ SET NAMES utf8;
الاستعلام يساعد في بعض الأحيان.)