ইউটিএফ -16 এর পরিবর্তে ইউটিএফ -8 নির্গত করতে ডিফল্ট পাওয়ারশেল?


31

ডিফল্টরূপে, উইন্ডোজে পাওয়ারশেলটি ইউটিএফ -16 আউটপুট করছে বলে মনে হয় (যেমন, যদি আমি একটি সাধারণ করি echo hello > hi.txt, তবে hi.txtইউটিএফ -16 এ শেষ হবে)। আমি জানি যে আমি এটির পরিবর্তে আমার পছন্দসই পাঠ্য এনকোডিংয়ে জোর করতে পারি echo hello | out-file -encoding utf8 hi.txt, তবে আমি যা চাই তা হ'ল আমি যখন পুনঃনির্দেশ অপারেটরটি ব্যবহার করি তখন কেবল এটিই ডিফল্ট হয়। এটি অর্জন করার কোনও উপায় আছে কি?


1
বিকল্পের জন্য টিপটির জন্য ধন্যবাদ, টার্মিনাল থেকে এটি করা কখনও কখনও পাঠ্য সম্পাদকের চেয়ে দ্রুততর হতে পারে।
টড প্যাটরিজ

পাওয়ারশেল .0.০-এ, এটি অপ্রয়োজনীয় হিসাবে উপস্থাপন করা হয়েছে - পাওয়ারশেল এখন পুনঃনির্দেশের জন্য এনকোডিং ছাড়াই ইউটিএফ -8 এ ডিফল্ট। দেখুন github.com/PowerShell/PowerShell/issues/4878
kumarharsh

উত্তর:


21

সিস্টেমটিতে একটি নেট ডেকম্পিলার ব্যবহার করে an ব্যবস্থাপনা .আটোমেশন অ্যাসেমব্লিং (ওরফে "মাইক্রোসফ্ট উইন্ডোজ পাওয়ারশেল ইঞ্জিন কোর অ্যাসেম্বলি") এই কোড টুকরা প্রকাশ করে:

// 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);
    ...

সুতরাং, এটি আমার কাছে বেশ হার্ডকোডযুক্ত দেখাচ্ছে।

এফওয়াইআই, এটি উইন্ডোজ 7 এন্টারপ্রাইজ x64 সিস্টেমে পাওয়ারশেল 2.0 ইনস্টল করা ছিল।


5
উইন্ডোজ 10 তে পাওয়ারশেল 5 তে এখনও হার্ড কোডিং হয়েছে, দুর্ভাগ্যক্রমে:CommandParameterInternal.CreateParameterWithArgument(PositionUtilities.EmptyExtent, "Encoding", "-Encoding:", PositionUtilities.EmptyExtent, "Unicode", false, false);
আর্টফুঙ্কেল

3

এটি আপনি যা সন্ধান করছেন ঠিক সেভাবে কাজ করবে কিনা তা নিশ্চিত নয় তবে আপনি এখানে বর্ণিত হিসাবে পরিবেশের পরিবর্তনশীল সেট করার চেষ্টা করতে পারেন

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

2
আমার মনে $OutputEncodingহয় না আমার যা প্রয়োজন তা ঠিক; এটি পাওয়ারশেলের এএসসিআইআইতে সেট করা হয়েছে এবং কীভাবে জিনিসগুলি প্রদর্শিত হয় তা প্রভাবিত করে । আমি যা করতে চাই তা হ'ল কোনও ফাইলে সংরক্ষিত পাঠ্যের বিন্যাসটি পরিবর্তন করা, যা (এএএএফআইসিটি) যা $OutputEncodingনিয়ন্ত্রণ করে তার চেয়ে আলাদা ।
বেনিয়ামিন পোল্যাক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.