隨着的powershell 2.0之間空值:Powershell的2.0生成字符
寫輸出 「ABCD」 >> mytext.txt
寫道:一個NUL b NULÇNUL d NUL
OD -c節目nul作爲一個真正的二進制零,\ 0或:a \ 0 b \ 0 c \ 0 d \ 0(和\ r \ 0 \ n \ 0)
我想要生成一些SQL,不要以爲這會做。任何有關正在發生的事情的想法以及如何使用write-output來獲取指定的字符?
謝謝!
隨着的powershell 2.0之間空值:Powershell的2.0生成字符
寫輸出 「ABCD」 >> mytext.txt
寫道:一個NUL b NULÇNUL d NUL
OD -c節目nul作爲一個真正的二進制零,\ 0或:a \ 0 b \ 0 c \ 0 d \ 0(和\ r \ 0 \ n \ 0)
我想要生成一些SQL,不要以爲這會做。任何有關正在發生的事情的想法以及如何使用write-output來獲取指定的字符?
謝謝!
這是因爲寫輸出默認爲UTF-16文本編碼,每個字符2個字節。當您處理符合ASCII代碼頁範圍的文本時,每個字符的第二個字節將爲零。
這受全局變量$OutputEncoding
控制,因此您可以將其設置爲ASCII。
另一種選擇是使用cmdlet Out-File,它具有明確的編碼參數。我建議你使用這個來代替輸出重定向,因爲這可以讓你免於全局改變你的環境(通過設置全局首選變量$OutputEncoding
)
使用Out-File並將編碼設置爲ASCII,你的例子看起來像這樣的:
"abcd" | out-file "mytext.txt" -Encoding ASCII
請注意,並非所有的字符使用ASCII表示的,你應該確定這是否是你的目的一個適當的編碼。就個人而言,我通常會選擇UTF-8,因爲當字符落在從0-127的ASCII範圍內時它是ASCII等效的,但也處理國際字符。 Obligatory link about text encoding。
默認情況下Powershell以16位unicode工作,但是您正在讀取的文件可能是8位格式。你可以解釋,可以讀取UTF-16,或應用程序的SQL,因爲>>是針對出文件cmdlet的語法糖,你可以做,而不是執行以下操作:
write-output "abcd" | out-file -path mytext.txt -Encoding "UTF8" -Append
感謝您的快速響應 - 我需要的答案,但我只能將其中一個標記爲已接受。 – cvsdave 2010-09-27 17:50:55
感謝您問這個問題! – 2017-10-23 18:31:04