2012-08-28 10 views
5

मैं ऐसी वेबसाइट पर काम कर रहा हूं जो डेटाबेस में उच्चारण वर्णों का उपयोग/संग्रह करता है। मैं पृष्ठ टेम्पलेट सेट है तो config.php चारसेट चर सेटिंग, जैसे मेल खाता है:कोडइग्निटर कॉन्फ़िगरेशन वर्णसेट और यूटीएफ -8 समर्थन

<meta charset="<?php echo $this->config->item('charset');?>"> 

समस्या मैं आ रही है, जब $config['charset']UTF-8, प्रपत्र के लिए सेट है सत्यापन विफल रहता है और ऐसा लगता है कि अगर कोई उच्चारण वर्ण शामिल किया गया तो कोई वर्ण सबमिट नहीं किया गया था। इसलिए, उदाहरण के लिए, स्ट्रिंग में कहीं भी शामिल होने पर एक आवश्यक फ़ील्ड वापस उछाल जाएगा। स्ट्रिंग माइनस ठीक काम करता है।

मैं बदल कर इस काम कर पाने के लिए प्रबंधित किया है $config['charset']ISO-8859-1 करने और UTF-8 में पाठ परिवर्तित डालने से पहले/php के utf8_encode() और utf8_decode() साथ डेटाबेस से पुन: प्राप्त करने के बाद। क्या यह सबसे अच्छा तरीका है या क्या मुझे यूटीएफ -8 प्राप्त करने के लिए कोड इग्निटर में काम कर रहे अक्षरों वाले अक्षरों के साथ कुछ याद आ रही है?

किसी भी सलाह की सराहना की।

+0

सुनिश्चित करें कि आप हर जगह यूटीएफ -8 सेट करते हैं। यह कहना मुश्किल है कि क्या गलत हो जाता है, लेकिन शायद किसी बिंदु पर आपके पास एक अलग चरित्र सेट है। पढ़ना चाहिए: http://www.joelonsoftware.com/articles/Unicode.html। – Styxxy

उत्तर

12

आपको यह सुनिश्चित करना होगा कि आप हर जगह यूटीएफ -8 का उपयोग करें, और दोनों PHP और MySQL यूटीएफ -8 को संभालने के लिए कॉन्फ़िगर किए गए हैं।

एचटीएमएल में, मेटा टैग को जोड़ने:

<meta charset="utf-8" /> 

और UTF-8 स्वरूप में सहेजें। यहां how to do that in notepad++ है।

, UTF-8 का समर्थन करने के MySQL तालिकाओं को परिभाषित के साथ तालिका बनाने:

DEFAULT CHARSET=utf8; 

और करने के लिए कनेक्शन सेट करें: php.ini में

mysql_set_charset('utf8', $con); 

Enable UTF-8:

default_charset = "utf-8" 

एक पूर्ण मैनुअल चेक के लिए Handling Unicode Front To Back In A Web App

+0

उत्तर और लिंक के लिए बहुत धन्यवाद - मैं यह सुनिश्चित करने के लिए जांच करूंगा कि यूटीएफ -8 का उपयोग पूरे समय किया जा रहा है। फॉर्म सत्यापन समस्या $ utf-8 '(सभी लोअरकेस) की बजाय $ config [' charset '] सेटिंग' UTF-8 '(सभी अपरकेस) पर सेट की जा रही है। किसी कारण से अपरकेस 'यूटीएफ -8' होने के लिए डिफ़ॉल्ट सेटिंग काम नहीं करती है (कम से कम मेरे सेटअप पर नहीं)। –

+0

शांत, मदद करने में खुशी :) +1 – Kuf

+0

Google पर इसे ढूंढने वाले लोगों के लिए छोटी टिप्पणी - इस समस्या का वैकल्पिक स्रोत तालिका _or column_ का एन्कोडिंग हो सकता है (हाँ, तालिका के एन्कोडिंग को बदलने से व्यक्तिगत कॉलम के एन्कोडिंग नहीं बदले) - उस मामले में यूटीएफ -8 स्ट्रिंग वाले कॉलम के भीतर संपादन मूल्य के परिणामस्वरूप "गलत स्ट्रिंग मान" चेतावनी होगी, जो तब दिखाई नहीं दे रहा है जब आप कोडिनेटर के माध्यम से क्वेरी चलाते हैं। आप सभी देखेंगे? यूटीएफ -8 char के बजाय । – MarcinWolny

संबंधित मुद्दे