MySQL मा इन्कोडिङ तीन ठाउँमा तोकिन्छ
- स्तम्भ वा टेबल: डाटा कुन character set मा राखिन्छ, जस्तै
utf8mb4वाlatin1। - कनेक्सन: क्लाइन्ट र सर्भरले कुन character set मा कुरा गर्छन् –
SET NAMES utf8mb4ले वा कनेक्सन सेटिङमा तोकिन्छ। - फाइल: इम्पोर्ट पढ्ने वा एक्सपोर्ट लेख्ने इन्कोडिङ – phpMyAdmin मा Character set of the file मा पाइन्छ।
तीनवटा नमिले अक्षर बिग्रिन्छन्। सबैभन्दा सामान्य अवस्था: UTF-8 मा लेखिएको नेपाली latin1 कनेक्सनबाट latin1 स्तम्भमा गयो। एपमा सबै ठीक देखिन्छ, तर phpMyAdmin र एक्सपोर्टमा नेपाल देखिन्छ।
अघि
g]kfn lxdfnosf] b]z xf] / sf7df8f}+ o;sf] /fhwfgL xf]
पछि
नेपाल हिमालयको देश हो र काठमाडौं यसको राजधानी हो
Character set जाँच्नुस्
SHOW VARIABLES LIKE 'character_set%';ले सर्भर र कनेक्सनको सेटिङ देखाउँछ।SHOW CREATE TABLE customers;ले टेबल र त्यसका स्तम्भको character set देखाउँछ।SELECT name, HEX(name) FROM customers LIMIT 5;ले वास्तविक बाइट देखाउँछ:utf8mb4स्तम्भमाE0A4A8सहीनहो, जबकिC3A0C2A4C2A8पहिले नै बिग्रिएकोनहो।
एक्सपोर्ट वा डम्प ठीक गर्नुस्
- phpMyAdmin मा टेबल SQL वा CSV मा एक्सपोर्ट गर्नुस् – वा
mysqldump --default-character-set=utf8mb4ले। - फाइललाई माथिको बक्समा हाल्नुस्। Mojibuster ले बिग्रिएका ठाउँ मात्र ठीक गर्छ; सही अक्षर जस्ताको तस्तै रहन्छन्।
- के बदलियो? मा ठीक गरिएका ठाउँ हेर्नुस् र फाइल डाउनलोड गर्नुस्।
- त्यसलाई
utf8mb4भएको टेबलमा इम्पोर्ट गर्नुस् र इम्पोर्ट डायलगमा character setutf-8छान्नुस्। - वास्तविक टेबल बदल्नुअघि प्रतिलिपिमा जाँच गर्नुस्।
एक्सपोर्ट तपाईंको कम्प्युटरबाट बाहिर जाँदैन – सेवाग्राहीको डाटाका लागि यो महत्त्वपूर्ण छ। Excel मा खोल्दा समस्या भए Excel र CSV मा नेपाली फन्टको समस्या पृष्ठ हेर्नुस्।
मूल कारण ठीक गर्नुस्
- नयाँ टेबल
DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ciसँग बनाउनुस्। - एपको कनेक्सन
utf8mb4मा राख्नुस्, PHP मा जस्तै PDO DSN माcharset=utf8mb4। - यदि
latin1स्तम्भमा UTF-8 बाइट छन् भने सिधैCONVERT TOनगर्नुस् – त्यसले तिनलाई दोस्रो पटक इन्कोड गर्छ। सुरक्षित बाटो बाइनरी टाइपबाट हो: पहिलेMODIFY name VARBINARY(255), त्यसपछिMODIFY name VARCHAR(255) CHARACTER SET utf8mb4। - यदि MySQL ले अक्षरको सट्टा
?राख्छ भने स्तम्भ वा कनेक्सनले ती अक्षर राख्नै सक्दैन। त्यसरी सुरक्षित भइसकेको कुरा हराइसकेको हो – मोजिबाके के हो मा पढ्नुस्।
धेरै सोधिने प्रश्नहरू
एपमा सबै ठीक देखिन्छ, phpMyAdmin मा किन होइन?
किनभने एप र डाटाबेसले एउटै गल्ती दुई पटक गर्छन्: एपले UTF-8 latin1 कनेक्सनबाट लेख्छ र त्यसै तरिकाले फर्काएर पढ्छ। phpMyAdmin सही कनेक्सनबाट जोडिन्छ, त्यसैले वास्तवमा सुरक्षित भएको कुरा देखाउँछ। WordPress चलाउनुहुन्छ भने WordPress र डाटाबेस तथा दुई पटक बिग्रिएको टेक्स्ट पनि हेर्नुहोस्।
कुन collation छान्ने?
धेरैजसो एपका लागि utf8mb4_unicode_ci ठीक छ; MySQL 8 देखि utf8mb4_0900_ai_ci डिफल्ट हो। collation भन्दा character set utf8mb4 महत्त्वपूर्ण छ – utf8 होइन, जसले MySQL मा इमोजी राख्न सक्दैन।
के यो MariaDB मा पनि चल्छ?
हो। MariaDB ले character set MySQL ले जस्तै सम्हाल्छ, र कमान्ड उही हुन्।
डम्प कति ठूलो हुन सक्छ?
प्रत्येक फाइल 100 MB सम्म। ठूला डाटाबेस टेबल-टेबल गरेर एक्सपोर्ट गर्नुस्।