كيفية الحصول على & nbsp إلى تتصرف بشكل صحيح باستخدام HTML تنقية؟

StackOverflow https://stackoverflow.com/questions/379339

سؤال

HTML تنقية في مشروع PHP بلدي وأواجه صعوبة في الحصول على العمل بشكل صحيح مع إدخال المستخدم.

وأواجه مستخدمين الدخول في HTML باستخدام محرر WYSIWYG ( محرر TinyMCE )، ولكن كلما يدخل المستخدم في الكيان HTML   (مسافة غير منقسمة) يحصل حفظه في قاعدة البيانات لأن هذا الطابع الأجنبي غريب (Â).

ومع ذلك، فإن الشيء هو، عندما تحرير إدخال حفظها باستخدام محرر WYSIWYG يحصل على عرض بشكل صحيح كما  . أيضا يعمل بشكل صحيح عند عرضها، إلا أن في التعليمات البرمجية المصدر يبدو كمساحة الحقيقي، ولكن ليس حرف مسافة غير منقسمة.

وأيضا، في قاعدة بيانات MySQL فإنه يعرض كحرف الأجانب غريب.

وأنا أقرأ وثيقة حول يونيكود وHTML تنقية وغيرت بلدي قاعدة البيانات والإنترنت ترميز الصفحة لتكون UTF-8، ولكن أنا لا تزال تواجه مشاكل مع حرف مسافة غير منقسمة لا يجري المهترئ. الكيانات HTML أخرى، مثل &lt; و&gt;، والحصول على حفظ كما < و>، ولكن لماذا لا &nbsp;؟

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

المحلول

لا يتم حفظ مسافة غير منقسمة في قاعدة البيانات ك طابع أجنبي غريب واحد، يجري حفظه ك <م> اثنين حرفا. يتم ترميز يونيكود حرف مسافة غير منقسمة في UTF-8 كما 0xC2 0xA0، والذي ISO-8859-1 يشبه "Â" (أي طابع أجنبي غريب متبوعا بمسافة غير منقسمة).

وربما كنت ناسيا أن تفعل SET NAMES 'utf8' على اتصال قاعدة البيانات الخاصة بك، والذي يسبب PHP لإرسال البيانات الخاصة به إلى الخلية كما ISO-8859-1 (الافتراضي).

وإلقاء نظرة على " UTF-8 على طول الطريق من خلال ... "لمعرفة كيفية صحيح إعداد UTF-8 عند استخدام PHP و MySQL.

نصائح أخرى

وقد يكون من المفيد لك أيضا أن نعرف أن &#160; هي بديل لل&nbsp; الذي من المرجح أن تتطلب إذا كنت من أي وقت مضى إخراج أي XML قراءة البشري؛)

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