MySQL र phpMyAdmin मा नेपाली टेक्स्टको इन्कोडिङ ठीक गर्नुस्

phpMyAdmin, तपाईंको SQL डम्प वा एपमा नेपालीको सट्टा नेपाल वा ???? देखिन्छ? प्रायः टेबल, कनेक्सन र इम्पोर्टको charset एकआपसमा मिल्दैन। Mojibuster ले तपाईंको ब्राउजरमै एक्सपोर्ट ठीक गर्छ – त्यसपछि MySQL लाई सधैंका लागि सही मिलाउनुस्।

टेक्स्ट र यी फाइलहरू चल्छन्:

  • CSV
  • TXT
  • JSON
  • XML
  • SRT
  • VTT
  • SMI
  • TSV
  • MD
  • HTML
  • SQL
  • LOG

जस्तै Excel बाट निकालिएका फाइल, डाटाबेस डम्प, सबटाइटल वा वेबसाइटको कोड।

ठीक पार्नुहोस्

  1. फाइल तानेर ल्याउनुहोस् वा टेक्स्ट टाँस्नुहोस्
  2. आफैं ठीक हुन्छ
  3. कपी वा डाउनलोड गर्नुहोस्
वा फाइल यहाँ तानेर ल्याउनुहोस्
  • कुनै अपलोड छैन। फाइलहरू तपाईंकै ब्राउजरमा ठीक हुन्छन् र तपाईंको उपकरणबाट बाहिर जाँदैनन्।

  • सर्भर EU मा। Mojibuster फिनल्यान्ड (EU) को एउटा सर्भरमा चल्छ, त्यसैले युरोपको सामान्य डाटा संरक्षण नियमन (GDPR) लागू हुन्छ। GDPR पढ्नुहोस् (EUR-Lex, अंग्रेजीमा)

MySQL मा इन्कोडिङ तीन ठाउँमा तोकिन्छ

  • स्तम्भ वा टेबल: डाटा कुन character set मा राखिन्छ, जस्तै utf8mb4 वा latin1।
  • कनेक्सन: क्लाइन्ट र सर्भरले कुन character set मा कुरा गर्छन् – SET NAMES utf8mb4 ले वा कनेक्सन सेटिङमा तोकिन्छ।
  • फाइल: इम्पोर्ट पढ्ने वा एक्सपोर्ट लेख्ने इन्कोडिङ – phpMyAdmin मा Character set of the file मा पाइन्छ।

तीनवटा नमिले अक्षर बिग्रिन्छन्। सबैभन्दा सामान्य अवस्था: UTF-8 मा लेखिएको नेपाली latin1 कनेक्सनबाट latin1 स्तम्भमा गयो। एपमा सबै ठीक देखिन्छ, तर phpMyAdmin र एक्सपोर्टमा नेपाल देखिन्छ।

phpMyAdmin को CSV एक्सपोर्टको एउटा पङ्क्ति

अघि

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 पहिले नै बिग्रिएको न हो।

एक्सपोर्ट वा डम्प ठीक गर्नुस्

  1. phpMyAdmin मा टेबल SQL वा CSV मा एक्सपोर्ट गर्नुस् – वा mysqldump --default-character-set=utf8mb4 ले।
  2. फाइललाई माथिको बक्समा हाल्नुस्। Mojibuster ले बिग्रिएका ठाउँ मात्र ठीक गर्छ; सही अक्षर जस्ताको तस्तै रहन्छन्।
  3. के बदलियो? मा ठीक गरिएका ठाउँ हेर्नुस् र फाइल डाउनलोड गर्नुस्।
  4. त्यसलाई utf8mb4 भएको टेबलमा इम्पोर्ट गर्नुस् र इम्पोर्ट डायलगमा character set utf-8 छान्नुस्।
  5. वास्तविक टेबल बदल्नुअघि प्रतिलिपिमा जाँच गर्नुस्।

एक्सपोर्ट तपाईंको कम्प्युटरबाट बाहिर जाँदैन – सेवाग्राहीको डाटाका लागि यो महत्त्वपूर्ण छ। 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 सम्म। ठूला डाटाबेस टेबल-टेबल गरेर एक्सपोर्ट गर्नुस्।

थप गाइड