के लिए अमान्य बाइट अनुक्रम मैं mysql से postgresql में एक डीबी माइग्रेट कर रहा हूं। MySQL डीबी का डिफ़ॉल्ट संयोजन यूटीएफ 8 है, पोस्टग्रेस यूटीएफ 8 का भी उपयोग कर रहा है, और मैं डेटा को pg_escape_string() के साथ एन्कोड कर रहा हूं। जो भी कारण तथापि के लिए, मैं बुरा एन्कोडिंग के बारे में कुछ अजीब त्रुटियों में चल रहा हूँ:PostgreSQL + PHP + UTF8 = एन्कोडिंग
pg_query() [function.pg-query]: Query failed: ERROR: invalid byte sequence for encoding "UTF8": 0xeb7374 HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client"
मैं चारों ओर poking इस पता लगाने की कोशिश कर रहा है, और पाया है कि php कुछ अजीब कर रही है; यदि एक स्ट्रिंग में केवल एसीसी वर्ण हैं (उदाहरण के लिए "हैलो"), एन्कोडिंग ASCII है। यदि स्ट्रिंग में कोई गैर असीसी वर्ण शामिल है, तो यह कहता है कि एन्कोडिंग यूटीएफ 8 है (उदाहरण के लिए "हेलो")।
जब मैं पहले से यूटीएफ 8 वाले तारों पर utf8_encode() का उपयोग करता हूं, तो यह विशेष वर्णों को मारता है और उन्हें सब गड़बड़ कर देता है, तो .. यह काम करने के लिए मैं क्या कर सकता हूं?
(सटीक चार यह फांसी ऊपर अभी है "", लेकिन इसके बजाय बस खोज/बदलें का, मैं एक बेहतर समाधान खोजने के लिए तो यह थोड़े समस्या फिर से नहीं होता है चाहते हैं)
इसके साथ टकराने के कुछ घंटों के बाद, मैं वास्तव में यह सोचना शुरू कर रहा हूं कि MySQL ने डीबी में गैर-utf8 तारों को अनुमति दी है, जो समस्या का कारण बन रहा है .. – Ian