PHP و MYSQL تحويل غير متوفرة إلى Unicode
سؤال
لدي شخصيات مثل هذه على موقع الويب الخاص بنا: fãƒâ © mnyomãƒâ³
هذا هو عنوان الشارع ، تم إدخاله بلغة أخرى (على الرغم من أنني لا أعرف أيها). هذا هو إعداد DB:
mysql 4.1.2log
charset cp1252 West European (latin1)
أنا أستخدم PHP ولكن بدون MBSTRINGS () (على الرغم من أنني لا أقوم بأي تحويلات سلسلة على هذا العنوان ، فقط Echo).
إذا قمت بتغيير MySQL Charset من CP1252 إلى UTF-8 وتأكد من أنني استخدمت أشياء مثل header( 'Content-Type: text/html; charset=UTF-8' );
هل سيحسن هذا وضعي؟ أو ، هل تم انتشار البيانات لأنه تم حفظه في CP1252 Charset ولا يوجد شيء يمكنني فعله؟ تم إنشاء قاعدة البيانات الأصلية في عام 2002 وتم استخدامها/توسيعها منذ ذلك الحين. لقد قمنا بترقية الخوادم وأعاد الاستيلاء عليها ، لكنني أخجل أعترف بعدم إعطاء الكثير من الفكر في Charsets.
إذا كنت متشوقًا ، فربما سأقوم فقط بإزالة النص في هذه الحقول ، لكنني أود دعم Unicode للمضي قدمًا ، لذلك إذا قمت بإصدار ALTER database_name DEFAULT CHARACTER SET utf8;
هل سيتأكد ذلك من حفظ الترميزات المتعددة المستقبلية بشكل صحيح ، مع إخراج تخزين على الأقل من المعادلة (تاركًا لي للقلق بشأن PHP)؟
شكرًا -
المحلول
1) تحويل جميع charsets إلى UTF8:
ALTER database_name DEFAULT CHARACTER SET utf8;
2) إصدار هذا قبل أي استعلام على الصفحة:
mysql_query("set names 'utf8'");
3) استخدم هذا الرأس:
header( 'Content-Type: text/html; charset=UTF-8' );
4) أدخل علامة التعريف هذه:
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
5) أيضا ، اقرأ هذا: http://www.oreillynet.com/onlamp/blog/2006/01/turning_mysql_data_in_latin1_t.html