मेरे पास टेक्स्टरेरा वाला एक फॉर्म है। उपयोगकर्ता टेक्स्ट का एक ब्लॉक दर्ज करते हैं जो डेटाबेस में संग्रहीत होता है।मैं स्ट्रिंग में वर्ड स्मार्ट कोट्स और एम डैश कैसे परिवर्तित करूं?
कभी-कभी कोई उपयोगकर्ता स्मार्ट उद्धरण या emdashes युक्त शब्द से टेक्स्ट पेस्ट करेगा। ,,, € â "€ ™ â € ँ एक एक €
क्या समारोह मैं को इनपुट स्ट्रिंग पर बुलाना चाहिए नियमित डैश लिए नियमित रूप से उद्धरण और emdashes करने के लिए स्मार्ट उद्धरण कन्वर्ट: उन पात्रों के रूप में डेटाबेस में दिखाई देते हैं?
मैं PHP में काम कर रहा हूं।
अद्यतन: अब तक के सभी महान प्रतिक्रियाओं के लिए धन्यवाद। एन्कोडिंग के बारे में जोएल की साइट पर पेज बहुत जानकारीपूर्ण है: http://www.joelonsoftware.com/articles/Unicode.html
मेरी पर्यावरण पर कुछ नोट:
MySQL डेटाबेस उपयोग कर रहा है UTF-8 एन्कोडिंग। इसी तरह, सामग्री प्रदर्शित करने वाले HTML पृष्ठ यूटीएफ -8 (अपडेट :) का उपयोग कर मेटा सामग्री-प्रकार को स्पष्ट रूप से सेट करके कर रहे हैं।
उन पृष्ठों पर स्मार्ट उद्धरण और emdashes प्रश्न चिह्न के साथ हीरे के रूप में दिखाई देते हैं।
समाधान:
प्रतिक्रियाओं के लिए फिर से धन्यवाद। समाधान दुगना था:
- यकीन है कि डेटाबेस और HTML फ़ाइलों को स्पष्ट रूप से UTF-8 एन्कोडिंग का उपयोग करने के लिए सेट किए गए थे।
-
htmlentities()
के बजायhtmlspecialchars()
का उपयोग करें।
ऐसा लगता है कि यह एकदम सही "त्वरित सुधार" जैसा लगता है लेकिन दुख की बात है कि यह * अधिक * अमान्य वर्ण जोड़कर मेरे परीक्षण मामले को काफी खराब कर देता है। –
लैटिन 1 से यूटीएफ -8 में कनवर्ट करना केवल तभी समझ में आता है जब आप * जानते हैं कि इनपुट कैरेक्टर सेट लैटिन 1 है। लेकिन यदि इनपुट पहले से ही यूटीएफ -8 है, तो आप लैटिन 1 से इसे "अनुवाद" करके ही इसे गले लगाएंगे दूसरी बार यूटीएफ -8 तक। –