मैं वर्तमान में कुछ खोज पर काम कर रहा हूं और ऑपरेशन को प्रतिस्थापित कर रहा हूं जिसे मैं पावरहेल का उपयोग करके स्वचालित करने की कोशिश कर रहा हूं। दुर्भाग्यवश मैंने कल पहचाना कि हमारे कोडबेस (यूटीएफ 8 और एएससीआईआईआई) में अलग-अलग फ़ाइल एन्कोडिंग हैं। चूंकि हम इन खोजों को कर रहे हैं और एक अलग शाखा में संचालन को प्रतिस्थापित कर रहे हैं, इसलिए मैं इस चरण में फ़ाइल एन्कोडिंग नहीं बदल सकता।पावरशेल आउट-फ़ाइल: एन्कोडिंग परिवर्तनों को रोकें
यदि मैं निम्नलिखित पंक्तियां चला रहा हूं तो यह सभी फ़ाइलों को यूसीएस -2 लिटिल ईंडियन में बदल देता है, भले ही मेरा डिफ़ॉल्ट पावरहेल एन्कोडिंग आईएसओ -885 9 -1 (पश्चिमी यूरोपीय (विंडोज)) पर सेट हो।
$content = Get-Content $_.Path
$content -replace 'myOldText' , 'myNewText' | Out-File $_.Path
क्या शक्तियों को फ़ाइल के एन्कोडिंग को बदलने से रोकने का कोई तरीका है?
क्या मैं हल करने के लिए इस मूल फ़ाइल के कूट प्राप्त करने की कोशिश करने के लिए है किया है यह byte order mark है पढ़ने का प्रयास पढ़ने और -Encoding
के रूप में यह का उपयोग करके:
मैं पहले से ही इसके बारे में सोचा, लेकिन एक आसान तरीका होना चाहिए, यह नहीं करना चाहिए? लेकिन यह अब मेरे लिए काम करता है। धन्यवाद एंडी! – Pete
@Pete आपको एन्कोडिंग प्राप्त करने जा रहे हैं। कोई cmdlet नहीं है जो इसे आपके लिए प्राप्त करेगा। मैंने अपना जवाब एक अलग दृष्टिकोण जोड़ दिया। दोनों तरीकों से बीओएम पहचान का उपयोग करें। –
'सेट-कंटेंट -पथ BOM_Utf32.txt -Value $ null -Eccoding UTF32' लिखता है _UTF-32, little-endian_ BOM i.e.' एफएफ एफई 00 00' बाइट अनुक्रम। हालांकि, 'गेट-फाइल एन्कोडिंग' कार्य 'यूनिकोड' लौटाता है। दूसरी तरफ, '00 00 एफई एफएफ' बाइट अनुक्रम' यूटीएफ 32' के रूप में पहचाना जाता है लेकिन [यूनिकोड कंसोर्टियम] के अनुसार (http://unicode.org/faq/utf_bom.html#BOM) यह _UTF-32 है, बड़ा-एंडियन_ बीओएम। क्या मै गलत हु? त्रुटि कहां है? – JosefZ