2011-03-08 14 views
6

में कनवर्ट करें मेरे पास एक डीबी है - तालिका लेखों के साथ।लैटिन 1 को यूटीएफ 8

मैं अब UTF8 करने के लिए शीर्षक और सामग्री में क्षेत्र परिवर्तित करना चाहते हैं - सभी डेटा इस तरह दिखता है: פורטל רעל נפתח רשמית! मैं यह सामान्य हिब्रू पात्रों बनना चाहता हूँ।

धन्यवाद

+0

'phpmyadmin' साथ करते हैं, कि मेज पर जाने के गुण बदल ... सरल – diEcho

+0

यह पहले से ही की कोशिश की, पीएमए पर डेटा अपने स्वयं ही लग रहा है। – WEBProject

+1

यह कहना मुश्किल है कि अधिक जानकारी के बिना क्या करना है, लेकिन एक बात यह जानना मुश्किल है कि MySQL में तालिका के वर्ण एन्कोडिंग को बदलना * नहीं * डेटा को नए एन्कोडिंग में परिवर्तित करता है। डेटाबेस में संग्रहीत वास्तविक बाइट एक ही रहते हैं। –

उत्तर

5

आप इस डेटाबेस से mysqldump बना सकते हैं। फिर नोटपैड ++, ओपन डंप फ़ाइल जैसे कुछ डाउनलोड करें, इसे यूटीएफ 8 में परिवर्तित करें, फिर फ़ाइल के माध्यम से सभी एन्कोडिंग को पहले एसईटी नेमस ऑपरेटर सहित utf-8 में बदलें।

यदि आप phpMyAdmin (डिफ़ॉल्ट सेटिंग्स के साथ) के माध्यम से फ़ाइल करने के लिए डंप करते हैं तो यूटीएफ -8 के बजाय आउटपुट फ़ाइल एन्कोडिंग आईएसओ -8859-1 का उपयोग करें क्योंकि आप डिफ़ॉल्ट रूप से देख सकते हैं।

1

कोशिश

ALTER TABLE `tablename` CHANGE `field_name` `field_name` VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL 
8

अगर आप पूरे डेटाबेस बदलने की आवश्यकता है, तो आप databaseback.sql फ़ाइल के रूप में ले सकते हैं तो फार्म अपने आदेश पंक्ति iconv -f latain -t utf-8 <databaseback.sql> databaseback.utf8.sql

आप http://www.php.net/manual/en/function.iconv.php
उपयोग कर सकते हैं यदि आपके पास कमांड लाइन एक्सेस

012 नहीं है तो प्रत्येक पंक्ति को php में कनवर्ट करने के लिए

और अंत में भूल नहीं है phpmyadmin में प्रत्येक फ़ील्ड का मिलान कन्वर्ट करने के लिए है, तो आप UTF8 resotre कर सकते हैं वापस आसानी से

अद्यतन

अगर आप iconv is not recognized मिला है, इसका मतलब है कि तुम नहीं iconv स्थापित किया है

और अधिक आसान समाधान है: माइग्रेट MySQL यूनिकोड

करने के लिए डेटा

http://daveyshafik.com/archives/166-migrating-mysql-data-to-unicode.html

+0

मैंने इसे सीएमडी पर आजमाया है - मिला: 'iconv 'एक ऑपरेटिंग प्रोग्राम या बैच फ़ाइल के रूप में पहचाना नहीं गया है। – WEBProject

4

आप एक छोटी सी PHP लिपि लिख सकते हैं जो रूपांतरण करता है। http://www.php.net/manual/en/function.mb-detect-encoding.php और http://php.net/manual/en/function.mb-convert-encoding.php देखें इस तरह मैंने यह किया।

और सख्त मोड का उपयोग करना याद रखें! http://www.php.net/manual/en/function.mb-detect-encoding.php#102510

स्यूडोकोड में यह sth होगा। इस तरह:

str = getDataAsString() 
if(!isUTF8(str)) { 
    str = convert2UTF8(str) 
} 
saveStr2DB() 
+0

ने कोशिश की, मैं utf-8 प्राप्त करता हूं जब मैं detec का उपयोग कर रहा हूँ, तो .. wierd। – WEBProject

+0

सख्त मोड क्या है? – WEBProject

+0

देखें http://www.php.net/manual/en/function.mb-detect-encoding.php#102510 - आपको अंतिम पैरामीटर को "सत्य" पर सेट करना होगा, फिर यह सही एन्कोडिंग का पता लगाएगा :) – Tobias

6

निम्नलिखित MySQL समारोह डबल एन्कोडिंग के बाद सही UTF8 स्ट्रिंग वापस आ जाएगी:

CONVERT (कास्ट (परिवर्तित (क्षेत्र latin1 का प्रयोग करके) बाइनरी के रूप में) का उपयोग कर UTF8) यह किया जा सकता है एक अद्यतन बयान क्षेत्रों को दूर करने के साथ:

अद्यतन tablename सेट क्षेत्र = CONVERT (कास्ट (CONVERT (क्षेत्र latin1 का प्रयोग करके) बाइनरी के रूप में) का उपयोग UTF8);

+1

यह विशेष चरित्र पर शब्द को छोटा करता है :( –

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