कैसे एक यूटीएफ -8 वेबसाइट को संभालने के लिए सबसे अच्छा PHP कॉन्फ़िगर करें I

आप किस एक्सटेंशन की सिफारिश करेंगे और php को सबसे अच्छी तरह एक वेबसाइट बनाने के लिए कॉन्फ़िगर किया जाना चाहिए जो सब कुछ के लिए यूटीएफ -8 एन्कोडिंग का उपयोग करता है जैसे …

  • पेज आउटपुट यूटीएफ -8 है
  • फॉर्म यूटीएफ -8 में एन्कोड किए गए आंकड़े जमा करते हैं
  • स्ट्रिंग डेटा की आंतरिक प्रसंस्करण (उदाहरण के लिए जब किसी डेटाबेस से बात कर रहे हैं) सभी यूटीएफ -8 में भी हैं

ऐसा लगता है कि PHP वास्तव में इस समय multibyte वर्ण सेट के साथ अच्छी तरह से सामना नहीं करता है। अब तक मैंने काम किया है कि एमबस्ट्रिंग एक महत्वपूर्ण विस्तार की तरह दिखता है।

क्या यह परेशानी लायक है ..?

Solutions Collecting From Web of "कैसे एक यूटीएफ -8 वेबसाइट को संभालने के लिए सबसे अच्छा PHP कॉन्फ़िगर करें I"

यूनिकोड सामग्री के साथ PHP के होने वाले मुद्दों को कुछ हद तक अतिरंजित किया गया है। मैं 1 99 8 के बाद से बहुभाषी वेबसाइटों को कर रहा था और कभी नहीं पता था कि जब तक मैंने इसके बारे में कहीं पढ़ा है – कई सालों और बाद में वेबसाइट

यह मेरे लिए ठीक काम करता है:

अपाचे विन्यास (httpd.conf या .htaccess में)

AddDefaultCharset utf-8 

PHP (php.ini में)

 default_charset = "utf-8" mbstring.internal_encoding=utf-8 mbstring.http_output=UTF-8 mbstring.encoding_translation=On mbstring.func_overload=6 

माई एसक्यूएल

अपने डेटाबेस को एक utf8_* कोलेशन के साथ utf8_* , तालिकाओं को डेटाबेस कोलेशन प्राप्त करें और "SET NAMES utf8" साथ हर कनेक्शन शुरू करें

HTML (मुख्य तत्व में)

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

मुझे UTF-8 characters लिए एक ही समस्या का सामना करना पड़ रहा था, सब कुछ लाइव सर्वर और स्टेजींग सर्वर पर काम कर रहा था, लेकिन कुछ समय यह मेरे देव मशीन पर तोड़ रहा है। व्यवहार इतना अजीब था, कुछ बार वर्णों को ठीक से एन्कोड किया गया था लेकिन यादृच्छिक पृष्ठ पुनः लोड पर ही Diamond Charters साथ शुरू करना शुरू कर दिया गया था ' เห็นอเวิลด์! ' या Question mark '?? เห็นอเวิลด์!???' या 85% डेटा ठीक से 'เห็นอเวิลด์!? ' का अनुवाद कर रहे 'เห็นอเวิลด์!? ' लेकिन बाकी 15% बेजोड़ वर्ण दिखा रहा था। मैं इस मुद्दे को ठीक करने की कोशिश कर रहा था तो, मेरी चेकलिस्ट से शुरुआत हुई

1 – एचटीएमएल में वर्ण शीर्षलेख को जोड़कर देखें


2 – जांचें कि डेटा MySQL तालिका में उचित रूप से सहेजा गया है या नहीं


3 – जांचें कि क्या MySQL में UTF-8 के लिए उचित एन्कोडिंग सेटिंग है


4 – जांचें कि क्या अपाचे ने यूटीएफ -8 कैरेक्टर सेट से निपटने की स्थापना की है


5 – जाँचें कि क्या सरल PHP "गूंज" गूंज कर सकता है इनपुट के रूप में एक ही आउटपुट "पृष्ठ"


6 – अगर PHP उचित हेडर आउटपुट भेज रहा है तो जांचें


7 – जांचें कि क्या MySQL क्वेरी को समान डेटा मिल रहा है "जानकारी"


8 – जांचें कि "เห็น อ เวิลด์" में कुछ एचटीएमएल वर्ण हैं, उनके साथ ठीक से काम करें


9 – अगर जांचें कि "किसी भी एचआईएल एन्कोड डीकोड फ़ंक्शन" के माध्यम से गुजर रहा हो


10- जांच करें कि .htaccess सभी यूटीएफ -8 कैरेक्टर सेट से निपटने के लिए सेट है


यह जानने के लिए उपरोक्त सभी सूची देखें कि कुछ कहां..ब्रेकिंग

कोशिश दो (मैं Codeigniter का उपयोग कर रहा हूँ):

 ================================= :: PHP ini Settings:: ================================= default_charset = "utf-8" mbstring.internal_encoding=utf-8 mbstring.http_output=UTF-8 mbstring.encoding_translation=On mbstring.func_overload=6 ================================= :: .htaccess Settings:: ================================= DefaultLanguage en-US AddDefaultCharset UTF-8 ================================= :: HTML Header Page:: ================================= <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ================================= :: PHP Codeigniter index.php :: ================================= header('Content-Type: text/html; charset=UTF-8'); ================================= :: Codeigniter config.php :: ================================= $config['charset'] = 'UTF-8'; ================================= :: Codeigniter database.php :: ================================= $db['default']['char_set'] = 'utf8'; $db['default']['dbcollat'] = 'utf8_general_ci'; ================================= :: Codeigniter helper function (optional) ================================= if(!function_exists('safe_utf_string')){ function safe_utf_string($utf8string= ''){ $utf8string = htmlspecialchars($utf8string, ENT_QUOTES, 'UTF-8'); return mb_convert_encoding($utf8string, 'UTF-8'); } } 

और अंत में धन्यवाद कहना भूल नहीं है! 🙂 @ डीजेएन उत्तर के लिए

php copes बस ठीक!

आपको php.ini "default_charset" पैरामीटर को 'utf-8' पर सेट करना चाहिए।

सुनिश्चित करें कि: –

 <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

आपके द्वारा प्रदत्त प्रत्येक पृष्ठ के शीर्ष पर है

कुछ समस्याएं हैं:

डेटाबेस – सुनिश्चित करें कि उन्हें डिफ़ॉल्ट रूप से utf-8 का उपयोग करने के लिए कॉन्फ़िगर किया गया है या दर्द की दुनिया दर्ज करें।

आईडीई / संपादकों – बहुत सारे संपादकों को यूटीएफ -8 का समर्थन नहीं करते। मैं सामान्यतया वीआईएम का उपयोग करता हूं जो कि नहीं बल्कि इसकी एक बड़ी समस्या थी

दस्तावेज़ – बस एक पूरे दोपहर बिताए एक स्प्रैडशीट के बाहर थाई कोह्रेटर्स पढ़ने के लिए php हो रही है। मैं अंततः सफल था, लेकिन अभी भी सुनिश्चित नहीं है कि मैंने सही क्या किया।

यदि mbstring पहले से ही आपके PHP पैकेज का हिस्सा नहीं है, तो मैं निश्चित रूप से आपसे इसे सुझाएगा – आप इसे फॉर्म इनपुट के लिए गणना स्ट्रिंग लम्बाई (mb_strlen ($ string_var, 'utf8') के लिए भी इसका उपयोग करना चाहेंगे … अन्यथा आपको वैध और उचित एचटीएमएल के अलावा कुछ भी ज़रूरत नहीं होगी, एक सही HTTP- सर्वर-कॉन्फ़िग (जिससे सर्वर यूटीएफ -8 को भुनाने वाले पृष्ठों को वितरित करेगा) और यूटीएफ -8-समर्थन (उदाहरण के लिए नोटपैड ++) के साथ पाठ संपादक।

आपके php.ini में, सेट करें

 mbstring.internal_encoding = UTF-8 mbstring.encoding_translation = On 

ताकि आपको हर बार एमबी_ फ़ंक्शंस पर एन्कोडिंग पैरामीटर पास करने की आवश्यकता न हो।