سؤال

لدي شخصيات مثل هذه على موقع الويب الخاص بنا: 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top