2010-07-04 8 views
5

मेरे पास एक PHP वेब ऐप है जिसमें MySQL टेबल utf8 टेक्स्ट लेते हैं। मैंने हाल ही में लैटिन 1 से utf8 के डेटा को तालिका और कॉलम के साथ रूपांतरित कर दिया है। हालांकि, मैंने mysql_set_charset और नवीनतम आने वाले डेटा का उपयोग करना भूल लिया जो मुझे लगता है कि MySQL कनेक्शन के माध्यम से लैटिन 1 के रूप में आया था। मुझे नहीं पता कि लैटिन 1 एक यूटीएफ 8 कॉलम में आता है, लेकिन यह कॉमा, कोट्स, एम्परसैंड इत्यादि जैसे कुछ अजीब डिस्प्ले मुद्दों का कारण बन रहा है।utf8 टेबल में latin1-एन्कोडेड टेक्स्ट डालने (mysql_set_charset का उपयोग करने के लिए भूल गए)

अब mysql_set_charset जगह पर है, यह डेटा खींच रहा है फंकी पात्रों के साथ बाहर। Latin1-utf8 सूप को सीधे utf8 में कनवर्ट करने का कोई तरीका है कि मेरे पास सही वर्णसेट का उपयोग कर डेटाबेस कनेक्शन संसाधन है?

+0

चारों ओर परीक्षण करने और इसे मेरे उत्तर के रूप में बेचने के लिए बहुत आलसी .. http://www.mysqlperformanceblog.com/2007/12/18/fixing-column-encoding-mess-in-mysql/ आपकी मदद करनी चाहिए (कुछ वहां भी अच्छी टिप्पणियां)। यदि set_charset() गुम होने की अवधि के दौरान पंक्तियों को डालने/अद्यतन करने के लिए संभव है तो आप कुछ भी जांच किए बिना इन पंक्तियों को व्यावहारिक रूप से परिवर्तित भी कर सकते हैं। – Kuchen

उत्तर

4

आपकी टिप्पणी के साथ ठीक मिला। यहां एसक्यूएल लाइन थी जो प्रतीत होता है कि मेरी समस्या हल हो गई है।

UPDATE table SET col = CONVERT(CONVERT(CONVERT(col USING latin1) USING binary) using utf8); 

हालांकि स्तंभ UTF8 है, यह यह बलों,, बाहर के रूप में latin1 डेटा खींच बाइनरी में बदलने का UTF8 में बदलने और फिर से डालने के लिए।

+0

उपयोग करने से पहले प्रतिलिपि तालिका, hwo पता है –

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