UTF-16 के बजाय UTF-8 छोड़ने के लिए डिफ़ॉल्ट PowerShell?


31

डिफ़ॉल्ट रूप से, Windows में PowerShell UTF-16 (उदाहरण के लिए, अगर मैं एक सरल करता हूं echo hello > hi.txt, तो hi.txtUTF-16 में समाप्त होता है) आउटपुट करता है । मुझे पता है कि मैं ऐसा करने के बजाय अपने इच्छित पाठ एन्कोडिंग के लिए बाध्य कर सकता हूं echo hello | out-file -encoding utf8 hi.txt, लेकिन मैं इसके लिए क्या चाहूंगा कि जब मैं रीडायरेक्शन ऑपरेटर का उपयोग करूं तो केवल डिफ़ॉल्ट हो। क्या इसे प्राप्त करने का कोई तरीका है?


1
एक विकल्प के लिए टिप के लिए धन्यवाद, टर्मिनल से ऐसा करना कभी-कभी पाठ संपादक की तुलना में तेज हो सकता है।
टोड पार्ट्रिज

Powershell 6.0 में, यह अनावश्यक रूप से प्रस्तुत किया गया है - Powershell अब UTF-8 में पुनर्निर्देशन के लिए एन्कोडिंग के बिना डिफॉल्ट करता है। देखिए github.com/PowerShell/PowerShell/issues/4878
कुम्हारशाह

जवाबों:


21

System.Management.Automation असेंबली ("Microsoft Windows PowerShell इंजन कोर असेंबली उर्फ") पर .NET decompiler का उपयोग करके इस कोड के टुकड़े का पता चलता है:

// class: System.Management.Automation.RedirectionNode
private PipelineProcessor BuildRedirectionPipeline(string path, ExecutionContext context)
{
    CommandProcessorBase commandProcessorBase = context.CreateCommand("out-file");
    commandProcessorBase.AddParameter("-encoding", "unicode");
    if (this.Appending)
    {
        commandProcessorBase.AddParameter("-append", true);
    }
    commandProcessorBase.AddParameter("-filepath", path);
    ...

इसलिए, यह मेरे लिए बहुत कठिन है।

FYI करें, यह विंडोज 7 एंटरप्राइज x64 सिस्टम पर था जिसमें PowerShell 2.0 स्थापित था।


5
विंडोज 10 पर CommandParameterInternal.CreateParameterWithArgument(PositionUtilities.EmptyExtent, "Encoding", "-Encoding:", PositionUtilities.EmptyExtent, "Unicode", false, false);
पावरशेल

3

सुनिश्चित नहीं हैं कि यह वही करेगा जो आप देख रहे हैं, लेकिन आप यहाँ वर्णित परिवेश चर सेट करने का प्रयास कर सकते हैं

$OutputEncoding = New-Object -typename System.Text.UTF8Encoding

2
मुझे नहीं लगता $OutputEncodingकि मुझे जो चाहिए वह काफी है; यह PowerShell में ASCII के लिए सेट है, और यह दर्शाता है कि चीजें कैसे प्रदर्शित होती हैं । मैं जो करना चाहता हूं वह एक फ़ाइल में सहेजे गए पाठ के प्रारूप को बदलना है, जो (AFAICT) $OutputEncodingनियंत्रणों से अलग है ।
बेंजामिन पोलाक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.