2010-09-27 23 views
10

arasındaki boş değerlere üreten bir nul b nul c nul d nulPowerShell 2.0 PowerShell 2.0 ile karakter

od -c gösterir NULL gerçek bir ikili sıfır, \ 0, veya: a \ 0 b \ 0 c \ 0 d \ 0 (ve \ r \ 0 \ n \ 0)

Bazı SQL üretmeye çalışıyorum, bu yüzden Bunun olacağını düşünmeyin. Neler olup bittiğine dair herhangi bir fikir ve yazılan çıktılar sadece belirtilen karakterleri almak için nasıl kullanılır?

Teşekkürler!

+0

Teşekkür Bu soruyu sorduğunuz için !! –

cevap

15

Bunun nedeni, yazma çıkışının varsayılan olarak karakter başına 2 bayt olan UTF-16 metin kodlaması olmasıdır. ASCII kod sayfası aralığına uyan metinle uğraşırken, her karakterin 2 baytı sıfır olacaktır.

Bu, $OutputEncoding genel değişkeni tarafından denetlenir, böylece bunu ASCII'ye ayarlayabilirsiniz.

Açık kodlama parametresi olan cmdlet Out-File'ı kullanmak başka bir seçenektir. Çıktı yönlendirmesi yerine bunu kullanmanızı öneririm, çünkü bu sizin küresel olarak ortamınızı değiştirmekten kurtarır ($OutputEncoding genel tercih değişkeni ayarlanarak)

Out-File kullanma ve ASCII olarak kodlamayı ayarlama örneğiniz Bu:

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

tüm karakterler ASCII sunulabilen olduğunu unutmayın musunuz ve bu amaç için yeterli gördükleri kodlama olup olmadığını belirlemek gerekir. Şahsen UTF-8'e giderdim, çünkü ASCII eşdeğeri karakterleri 0-127 arası ASCII aralığındayken aynı zamanda uluslararası karakterleri de kullanır. Obligatory link about text encoding.

+0

Hızlı ve eksiksiz yanıtınız için teşekkür ederiz. 21. yüzyılda, ASCII'yi asla beklememeliyiz. – cvsdave

+0

Gelecekte bunu arama çıkışı olarak gören herkes için, dış dosya bir -append bayrağını destekler, böylece ne kullanırdım: "abcd" | dosya dışı "mytext.txt" -Encoding ASCII -append – cvsdave

+0

Bu soruya cevap verdiğiniz için teşekkür ederiz! Ben Powershell'i biraz öğreniyorum. Cevabınız bana çok zaman kazandı! –

2

Powershell, varsayılan olarak 16 bitlik bir Unicode'da çalışır ve okuduğunuz dosya muhtemelen 8 bit biçimindedir. >> dışı dosya cmdlet'i için sözdizimsel şeker olduğu için, UTF16 veya okuyabilen bir uygulamada sql yorumlayabilir, bunun yerine aşağıdakileri yapabilirsiniz:

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

Hızlı cevabınız için teşekkürler - ihtiyacım olan cevap, ancak sadece kabul edildiği şekilde işaretleyebilirim. – cvsdave