سؤال

وأنا لا تزال تعلم الحبال مع PHP و MySQL و أنا أعلم أنني أفعل شيئا خطأ هنا مع كيف يتم تعيين مجموعات الأحرف، ولكن لا يمكن ان الرقم خارج تماما عن القراءة هنا وعلى شبكة الإنترنت ما يجب أن أقوم به .

ولدي تثبيت LAMP القياسية مع PHP 5 و MySQL 5. أنا وضعت كل شيء مع الإعدادات الافتراضية. عند بعض المستخدمين تعليقاتي الإدخال إلى قاعدة البيانات الخاصة بنا تظهر بعض الأحرف بشكل غير صحيح - ومعظمهم من الفواصل العليا وشرطات م في الوقت الراهن. في الخلية تظهر apostrostrophes على النحو â € ™. لأنها تكشف في الصفحة بهذه الطريقة أيضا (أنا باستخدام htmlentities على تعليقات المستخدم الإخراج).

في بريس تقول لي ماي محارف غير UTF8 يونيكود.

في قاعدة البيانات الخاصة بي يتم تعيين بلدي الجداول كل شيء مع الافتراضي LATIN1-السويدية-CI.

وبلدي صفحات الويب جميعا ميتا HTTP-EQUIV = "نوع المحتوى" محتوى = "نص / HTML؛ محارف = UTF-8"

وعندما أنظر إلى عناوين http الموقع أرى: نوع المحتوى: نص / HTML

ومثل مبتدئ، وأنا لم ينظر مجموعات الأحرف على الإطلاق حتى بدأت الأمور تبحث غريبة على بعض صفحاتي. لذلك لا تجعل أكثر إحساسا بالنسبة لي لتحويل كل شيء إلى UTF-8 وسيؤثر ذلك على قانون بلدي PHP؟ أو ينبغي أن تحاول الحصول على كل شيء إلى اللاتينية؟ ويمكنني أن تذهب إلى قاعدة البيانات واستبدال هذه الرموز ونيف، أو أنها سوف تعرض سحرية بمجرد أن إعداد ترميز بشكل صحيح؟ لم يساعد كل تافه قمت به حتى الآن (أنا وضعت عناوين http إلى UTF-8، وأيضا حاول اللاتينية).

هل كانت مفيدة؟

المحلول

http://www.phpwact.org/php/i18n/charsets

وهذا الموقع أعطاني الكثير من النصائح الجيدة حول كيفية جعل كل شيء تقوم به لطيفة في UTF-8.

وأنا أيضا recomened التحول من htmlentities إلى htmlspecialchars كما أنها أكثر UTF ودية.

والنقطة الرئيسية هي التأكد من كل شيء يتحدث نفس اللغة. قاعدة البيانات الخاصة بك، اتصال قاعدة البيانات الخاصة بك، PHP الخاص بك، صفحتك UTF8 (يجب أن يكون العلامة الوصفية ورأس قول ذلك).

نصائح أخرى

إذا كنت تريد حقا أن نفهم هذه القضايا، وأود أن تبدأ من خلال قراءة <لأ href = "http://dev.mysql.com/tech-resources/articles/4.1/unicode.html" يختلط = "نوفولو noreferrer" > هذه المادة في mysql.com . في الأساس، تريد كل قطعة من اللغز أن نتوقع UTF-8 يونيكود. على الجانب PHP، وتريد أن تفعل شيئا مثل:

<?php header("Content-type: text/html; charset=utf-8");?>
<html>
  <head>
     <meta http-equiv="Content-type" value="text/html; charset=utf-8">

وعند تشغيل الاستعلامات إدراج الخاص بك تريد التأكد من ترميز الأحرف الجدول على حد سواء <م> و الترميز الذي كنت تقوم بتشغيل الاستعلامات في وUTF-8. يمكنك إنجاز هذا الأخير عن طريق تشغيل SET NAMES utf8 الاستعلام الحق قبل تشغيل استعلام إدراج.

وعذرا لعدم فهم كل من سؤالك. "؟ UTF-8 أو لا" ولكن عندما جزءا من السؤال هو، كان الجواب: "UTF-8، بالطبع"

هل تريد بالتأكيد لترتيب الأمور الآن وليس آجلا. واحدة من قواعد البرمجة الأكثر أهمية هو عدم الاستمرار مع فكرة سيئة - لا حفر نفسك في أي أعمق

!

وكما LATIN1 وUTF 8 متوافقة، يمكنك تحويل الجداول الخاصة بك لاستخدام UTF-8 دون التلاعب في البيانات الواردة باليد. سوف الخلية فرز هذا الجزء للكم.

وانها ثم من المهم للتأكد من أن كل شيء يتحدث UTF-8. تعيين رؤوس HTTP في اباتشي أو استخدام العلامة الوصفية - وهذا يقول لمتصفح HTML الناتج هو UTF-8

ومع وضع هذا في الاعتبار، وكنت بحاجة للتأكد من كافة البيانات التي ترسلها هو حقا UTF-8! تكوين IDE لحفظ الملفات فب / أتش تي أم أل ك UTF-8. وأخيرا تأكد من أن PHP يستخدم اتصال UTF-8 إلى الخلية - قضية هذا الاستعلام بعد الاتصال:

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