मूल समस्या: हरेक कमान्डको आफ्नै इन्कोडिङ
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।
अघि
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 पर्याप्त छ।