2010-09-27 16 views
10

powershell 2.0 के साथ के बीच nulls उत्पन्न करता है:PowerShell 2.0 पात्रों

लिखने उत्पादन "एबीसीडी" >> mytext.txt

में लिखते हैं: एक नुल ख नुल ग नुल घ नुल

आयुध डिपो -c शो एक वास्तविक बाइनरी शून्य के रूप में नल, \ 0, या: एक \ 0 बी \ 0 सी \ 0 डी \ 0 (और \ r \ 0 \ n \ 0)

मैं कुछ SQL उत्पन्न करने की कोशिश कर रहा हूं, इसलिए मैं ऐसा मत सोचो यह करेगा। निर्दिष्ट वर्ण प्राप्त करने के लिए क्या हो रहा है और लिखने के आउटपुट का उपयोग करने के बारे में कोई भी विचार?

धन्यवाद!

+0

धन्यवाद !!: आप एक आवेदन है कि UTF16, या पढ़ सकते में एसक्यूएल व्याख्या की जा सकती क्योंकि >> बाहर फ़ाइल cmdlet के लिए वाक्यात्मक चीनी है, तो आपको निम्न के बजाय क्या कर सकते हैं –

उत्तर

15

ऐसा इसलिए है क्योंकि लेखन-आउटपुट यूटीएफ -16 टेक्स्ट एन्कोडिंग के लिए डिफ़ॉल्ट है, जो प्रति चरित्र 2 बाइट्स है। जब आप एएससीआईआई कोडपेज रेंज में फ़िट होने वाले पाठ से निपट रहे हैं, तो प्रत्येक वर्ण का दूसरा बाइट शून्य होगा।

यह $OutputEncoding वैश्विक चर द्वारा नियंत्रित है, इसलिए आप इसे ASCII पर सेट कर सकते हैं।

एक और विकल्प cmdlet आउट-फ़ाइल का उपयोग करना है, जिसमें एक स्पष्ट एन्कोडिंग पैरामीटर है। मैं सुझाव दूंगा कि आप इसे आउटपुट रीडायरेक्शन के बजाय इस्तेमाल करते हैं, क्योंकि यह आपको वैश्विक स्तर पर अपने पर्यावरण को बदलने से बचाता है (वैश्विक वरीयता चर $OutputEncoding)

आउट-फ़ाइल का उपयोग करना और एएससीआईआई होने के लिए एन्कोडिंग सेट करना, आपका उदाहरण कैसा दिखता है इस:

"abcd" | out-file "mytext.txt" -Encoding ASCII 

ध्यान रखें कि सभी पात्रों ASCII में प्रदर्शनीय हो करो, और आप यह निर्धारित करना चाहिए कि क्या इस उद्देश्य के लिए एक उचित एन्कोडिंग है। व्यक्तिगत रूप से मैं आम तौर पर यूटीएफ -8 के लिए जाता हूं, क्योंकि यह एएससीआईआई समकक्ष है जब वर्ण 0-127 से ASCII रेंज में आते हैं, लेकिन अंतरराष्ट्रीय पात्रों को भी संभालते हैं। Obligatory link about text encoding

+0

आपकी त्वरित और पूर्ण प्रतिक्रिया के लिए धन्यवाद। 21 वीं शताब्दी में किसी को एएससीआईआई की उम्मीद नहीं करनी चाहिए - जैसा कि ऊपर दिए गए जोएल लेख द्वारा बहुत अच्छे पते हैं! – cvsdave

+0

बस भविष्य में खोज आउटपुट के रूप में इसे देखने वाले किसी भी व्यक्ति के लिए, आउट-फ़ाइल एक -एपेंड ध्वज का समर्थन करता है, इसलिए मैं इसका उपयोग कैसे करूंगा: "abcd" | आउट-फाइल "mytext.txt" - एन्कोडिंग ASCII -append – cvsdave

+0

इस प्रश्न का उत्तर देने के लिए धन्यवाद !! मैं थोड़ा सा पावरहेल सीख रहा हूँ। आपके जवाब ने मुझे बहुत समय बचाया! –

2

पावरहेल डिफ़ॉल्ट रूप से 16 बिट यूनिकोड में काम करता है, और फिर भी आप फ़ाइल को पढ़ रहे हैं 8 बिट प्रारूप में। इस सवाल पूछने के लिए

write-output "abcd" | out-file -path mytext.txt -Encoding "UTF8" -Append 
+0

आपकी त्वरित प्रतिक्रिया के लिए धन्यवाद - मुझे जिस उत्तर की आवश्यकता है, लेकिन मैं केवल स्वीकृत के रूप में चिह्नित कर सकता हूं। – cvsdave