2008-09-16 14 views
40

मैं एक फ़ाइल यूसीएस -2 लिटल एन्डियन के रूप में सहेजा है एन्कोडिंग सेट करना मैं एन्कोडिंग को बदलना चाहते हैं तो मैं निम्नलिखित कोड भाग गया:Powershell: Get-सामग्री पाइपलाइन

cat tmp.log -encoding UTF8 > new.log 

परिणामी फ़ाइल यूसीएस में अब भी है -2 लिटिल एंडियन। क्या ऐसा इसलिए है क्योंकि पाइपलाइन हमेशा उस प्रारूप में है? क्या यूटीएफ 8 के रूप में इसे एक नई फाइल में पाइप करने का कोई आसान तरीका है?

उत्तर

45

के रूप में सुझाव दिया here:।

Get-Content tmp.log | Out-File -Encoding UTF8 new.log 
+0

इसका उत्तर देने के लिए धन्यवाद ... इससे मुझे यूटीएफ -8 –

+1

में एन्कोड किए गए एक्सएमएल फ़ाइल को पढ़ने में समस्या का पता लगाने में मदद मिली है, अब उस बेवकूफ बाइट-ऑर्डर चिह्न से कैसे छुटकारा पाएं? – Qwertie

+2

देखें http://stackoverflow.com/questions/5596982/using-powershell-to-write-a-file-in-utf-8-without-the-bom –

17

मैं इस तरह यह करना होगा:

get-content tmp.log -encoding Unicode | set-content new.log -encoding UTF8 

मेरे समझ के साथ कि -encoding विकल्प encdoing कि फ़ाइल या पढ़ा जाना चाहिए में लिखा का चयन करता है

+7

"मिल- सहायता सेट-कंटेंट "एक विकल्प के रूप में -कोडिंग की पहचान नहीं करता है, लेकिन यह वास्तव में काम करता है। – jedatu

+6

@jedatu: ऐसा इसलिए है क्योंकि यह पैरामीटर FileSystem प्रदाता से आता है। – Joey

2

एन्कोडिंग के साथ एक्सएमएल फ़ाइल से लोड सामग्री।

(Get-सामग्री -Encoding UTF8 $ फ़ाइल का नाम)

+1

आप सर ने मुझे बचाया! बहुत बहुत धन्यवाद :) – ylka

+0

एक्सएमएल फाइलों को पढ़ने के लिए 'गेट-कंटेंट' का उपयोग न करें, क्योंकि इसे फ़ाइल एन्कोडिंग के पूर्व ज्ञान की आवश्यकता है। XML पार्सर को फ़ाइल को स्वयं पढ़ने के लिए यह बहुत बेहतर है, क्योंकि यह फ़ाइल के किसी भी एन्कोडिंग के साथ सही ढंग से संबंधित है। '$ xml = (नया ऑब्जेक्ट सिस्टम.एक्सएमएल.एक्सएमएल दस्तावेज़)। लोड ($ फ़ाइल नाम)' – Tomalak

1

आपको कोई XML फ़ाइल को पढ़ रहे हैं, यहाँ एक और भी बेहतर तरीका है कि अपने एक्सएमएल फ़ाइल की एन्कोडिंग के लिए adapts है:

$xml = New-Object -Typename XML 
$xml.load('foo.xml')