2009-12-12 112 views
0

我在想未知選項用於二進制文件連接。什麼時候應該使用'Unknown'作爲-Encoding參數?

http://technet.microsoft.com/en-us/library/dd315299.aspx

未知的編碼類型是未知的 或無效。該數據可以被視爲 二進制。

{Get-Content binary.dat -Encoding Unknown}不返回字節數組而是字符串數組。

PS > $a = Get-Content $PSHOME\WTRInstaller.ico -Encoding Unknown 
PS > $b = Get-Content $PSHOME\WTRInstaller.ico -Encoding Byte 

PS > $a[0].GetType() 

IsPublic IsSerial Name          BaseType 
-------- -------- ----          -------- 
True  True  String         System.Object 

PS > $b[0].GetType() 

IsPublic IsSerial Name          BaseType 
-------- -------- ----          -------- 
True  True  Byte          System.ValueType 

即使我將$ a轉換爲字節數組,它也不符合$ b。

PS > [Text.Encoding]::Unicode.GetBytes($a) 
PS > compare $c[0..10] $b[0..10] 

               InputObject SideIndicator 
               ----------- ------------- 
                 10 => 
                 32 <= 

何時應該使用「未知」?

+0

賈爾夫,謝謝你的好編輯! – hoge 2009-12-13 03:52:08

回答

2

Uknown不是提供的東西,而是返回的東西。 System.Text.Encoding不只是供PowerShell使用。 BCL中有許多領域接受或返回相同的枚舉。一些值是用於回報的,其他用於供應。

-Oisin

+0

感謝Oisin,也就是說,似乎我不應該使用未知的東西來使用它。 – hoge 2009-12-13 03:49:21

+0

雖然它不是'System.Text.Encoding',但是'Get-Content'使用的值是'Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding',我猜,它看起來在PowerShell之外的使用非常有限。 – Joey 2012-08-31 12:55:37

相關問題