我试图通过邮寄请求上传zip。为此,我需要发送字符串和字节数据。
好的问题是二进制编码仍然存在。原始邮政编码的第一行是PK........,Q?E?;
,其中上传的副本为PK........,Q.E.;
原始邮件为?
,而副本将其转换为.
。
答案 0 :(得分:2)
[System.Text.Encoding]::ASCII.GetString([byte]$file)
$byteArray = [byte]$file
$enc = [System.Text.Encoding]::ASCII
$stringContents = $enc.GetString($byteArray)
如果文件的内容实际上是Unicode或其他编码,则可以使用其他编码。
要查看其他编码:
[System.Text.Encoding] | Get-Member -Type Properties -Static
我误解了你的问题。您担心字节被转换为字节数值的ASCII表示。
这实际上并不是发生了什么。当您使用Write-Host
,然后转换正在进行时,仅用于显示目的。
字节数组中的值是原始二进制数据。
您正在将字节数组$bytes
嵌入另一个字符串中。这隐式地将其转换为可显示的格式,这不是您想要的。
$bytes
确实包含原始数据。在这种情况下,您想要的是将每个字节直接放在字符串中。您应该尝试使用我发布的第一个解决方案,然后在$stringContents
中嵌入$bytes
而不是$parameters
。我认为这会做你所希望的。
当您显示包含实际包含内容的字符串时,不要混淆屏幕上打印的内容。虽然[String]
对象可能更复杂,但最简单的一个字符串是一个字节数组。例如,在C中,你没有声明字符串,你声明了一个char
的数组(通常是一个字节)。
我建议您尝试将其转换为字符串的方法,如果它不起作用则发表评论。