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

तपाईंको स्क्रिप्टले नेपालीको सट्टा नेपाल वा ? लेख्छ, वा कन्सोलमा टेक्स्ट बिग्रिएको देखिन्छ? Windows PowerShell 5.1 मा हरेक कमान्डको इन्कोडिङ फरक हुन्छ। यहाँ कारण र सही प्यारामिटर छन् – र बिग्रिएको फाइल माथि ब्राउजरमै ठीक गर्न सकिन्छ।

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

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

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

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

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

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

मूल समस्या: हरेक कमान्डको आफ्नै इन्कोडिङ

Windows PowerShell 5.1 मा लगभग हरेक कमान्डको आफ्नै डिफल्ट इन्कोडिङ छ: Get-Content ले BOM नभएको फाइललाई ANSI (Windows-1252) मानेर पढ्छ, Out-File र > ले UTF-16 लेख्छन्, Set-Content ले ANSI र Export-Csv ले ASCII। त्यसैले UTF-8 नेपाली न बन्छ वा ? हुन्छ। PowerShell 7 मा सबै एउटै भएको छ – सबैतिर BOM नभएको UTF-8।

PowerShell 5.1 मा Get-Content ले पढेको UTF-8 फाइल

अघि

g]kfnsf] /fhwfgL sf7df8f}+ xf]

पछि

नेपालको राजधानी काठमाडौं हो

फाइल सही तरिकाले पढ्नुस् र लेख्नुस्

  • Get-Content data.csv -Encoding UTF8 ले BOM नभएको UTF-8 फाइल पनि सही पढ्छ।
  • Set-Content, Out-File र Add-Content मा -Encoding UTF8 ले UTF-8 लेख्नुस् – 5.1 मा सधैं BOM सहित।
  • Export-Csv data.csv -Encoding UTF8 -NoTypeInformation लेख्नुस्; ASCII डिफल्टले नेपाली अक्षरलाई ? ले बदल्छ।
  • सबै कमान्डका लागि एकैपटक: स्क्रिप्टको सुरुमा $PSDefaultParameterValues['*:Encoding'] = 'utf8'।

Invoke-RestMethod र Invoke-WebRequest बाट वेब अनुरोध

यदि सर्भरले Content-Type मा character set बताउँदैन भने Windows PowerShell 5.1 ले जवाफलाई ISO-8859-1 मानेर डिकोड गर्छ। तब नेपाली UTF-8 जवाफमा नेपाल जस्तो टेक्स्ट आउँछ। समाधान: जवाफलाई बाइटमा लिनुस् र आफैं डिकोड गर्नुस्, जस्तै [Text.Encoding]::UTF8.GetString((Invoke-WebRequest $url).RawContentStream.ToArray())।

नेपाली अक्षर भएको स्क्रिप्ट फाइल

स्क्रिप्टलाई UTF-8 BOM बिना सेभ गर्नुभयो भने Windows PowerShell 5.1 ले त्यसलाई ANSI पढ्छ। Write-Host "नेपाल" जस्ता स्ट्रिङ तब नेपाल बन्छन्। .ps1 फाइल UTF-8 BOM सहित सेभ गर्नुस् – VS Code मा स्टाटस बारको इन्कोडिङबाट, Notepad++ मा Encoding → UTF-8-BOM बाट।

कन्सोल

यदि कन्सोल विन्डोमा मात्र ? वा अनौठा चिह्न देखिन्छन् भने प्रायः फाइल ठीकै हुन्छ – कन्सोलको फन्ट वा इन्कोडिङले देवनागरी देखाउन सक्दैन। आउटपुट इन्कोडिङ [Console]::OutputEncoding = [Text.Encoding]::UTF8 ले बदल्नुस्। बाहिरी प्रोग्राममा पठाइने आउटपुटका लागि $OutputEncoding = [Text.Encoding]::UTF8 पनि मिलाउनुस्।

यदि फाइल पहिले नै बिग्रिएर लेखिइसकेको छ भने माथिको बक्समा हाल्नुस्: Mojibuster ले न जस्ता अक्षर ठीक गर्छ र ANSI फाइललाई UTF-8 मा बदल्छ। फाइलमा पहिले नै ? छन् भने टेक्स्ट हराइसकेको हो – मोजिबाके के हो हेर्नुस्।

धेरै सोधिने प्रश्नहरू

मसँग PowerShell को कुन संस्करण छ?

$PSVersionTable.PSVersion ले देखाउँछ। 5.1 Windows मै भएको Windows PowerShell हो; 7 देखि केवल PowerShell भनिन्छ र डिफल्ट रूपमा UTF-8 प्रयोग गर्छ।

PowerShell बाट बनेको CSV Excel मा किन गलत खुल्छ?

PowerShell 7 ले BOM नभएको UTF-8 लेख्छ, जसलाई Excel ले चिन्दैन। -Encoding utf8BOM प्रयोग गर्नुस् वा Mojibuster मा फाइल BOM सहित सेभ गर्नुस्। थप: Excel र CSV मा नेपाली फन्टको समस्या।

के chcp 65001 चाहिन्छ?

कन्सोल कोड पेज पछ्याउने प्रोग्रामका लागि मात्र। PowerShell भित्र [Console]::OutputEncoding पर्याप्त छ।

थप गाइड