मुझे एक php-gtk ऐप के साथ एक छोटी सी समस्या है जो गैर-utf8 तारों में चलती रहती है, मुझे पता चला कि समस्या डेटाबेस कनेक्शन में है, भले ही डेटाबेस UTF-8 में होना चाहिए।PHP में पीडीओ/SQLite कनेक्शन के वर्ण एन्कोडिंग को कैसे बदलें?
मैंने "सेट वर्णक सेट utf8" (MySQL मार्ग) और "सेट नाम यूटीएफ 8" के साथ प्रयास किया था और कुछ भी नहीं हुआ (इस संदेश में से कोई भी "Query Language Understood by SQLite " पृष्ठ में कोई भी जानकारी नहीं है, इसलिए मैं इसके बारे में आश्चर्यचकित नहीं हूं)।
पीडी: शायद कनेक्शन पहले से ही यूटीएफ -8 में है और डेटा नहीं है, लेकिन अगर कनेक्शन एन्कोडिंग को बदलने का कोई तरीका है तो यह प्रश्न अभी भी उपयोगी होगा।
मुझे पता चला था कि "SQLite विशेष पाठ यह प्राप्त करता है के बारे में नहीं है और पाठ स्ट्रिंग्स कि सामान्यीकृत या यहाँ तक कि अच्छी तरह से गठित UTF-8 नहीं हैं पर कार्रवाई करने के लिए खुश से अधिक है प्रोग्रामर जो चाहते हैं। IS08859 डेटा स्टोर करने के लिए ... "तो पाठ मूल रूप से आईएसओ 85 (कुछ) – levhita
में था, मैंने आपकी सलाह का पालन किया और कुछ यूटीएफ 8_एनकोड्स (ओओपी के लिए प्रोग्रामिंग देवताओं का धन्यवाद) जोड़ा ताकि सब कुछ शुरुआत से utf8 हो। मेरा मुख्य डेटाबेस यूटीएफ 8 में बनाया गया है, और मैंने अभी कुछ प्लगइन डेटाबेस के साथ अपने सिस्टम को जोड़े जाने के लिए उन पंक्तियों को जोड़ा है। – levhita
उस स्थिति में, आपको डेटा वापस पुनर्प्राप्त करते समय utf8_decode का उपयोग करना होगा। यह केवल तभी जरूरी है, यदि आप आंतरिक रूप से PHP के डिफ़ॉल्ट वर्णसेट (आईएसओ -885 9 -1) का उपयोग करते हैं। अपने सिस्टम के माध्यम से यूटीएफ -8 का उपयोग करने पर विचार करें, इस मामले में आपको कुछ भी एन्कोड करने की आवश्यकता नहीं है (हां, यह भ्रमित है)। – troelskn