Странные символы при чтении Blob из контейнера - PullRequest
0 голосов
/ 02 января 2019

У меня есть несколько текстовых файлов, которые содержат либо OK, либо FAIL, записанные в учетную запись хранения. Если я загружаю файлы на диск, содержимое отображается в блокноте, как и ожидалось,

Однако, если я получу содержимое файла в переменную и Write-Host, я получу �O K

Я делаю это:

$storageContext = New-AzureStorageContext $storageAccountName $storageAccountKey
$storageContainer = "monitor"
$storageBlobs = Get-AzureStorageBlob -Container $storageContainer -Context    $storageContext

foreach($storageBlob in $storageBlobs) {
        $blobContents = $storageBlob.ICloudBlob.DownloadText()
        $blobName = $storageBlob.Name
        Write-Host $blobName
        Write-Host $blobContents
        Write-Host
  }

Я подумал, что, может быть, я мог бы сказать ему использовать UTF8 так:

$encoding = [System.text.Encoding]::UTF8

foreach($storageBlob in $storageBlobs) {
        $blobContents = $storageBlob.ICloudBlob.DownloadText($encoding)
        $blobName = $storageBlob.Name
        Write-Host $blobName
        Write-Host $blobContents
        Write-Host
  }

Однако это не работает.

Я сейчас пытаюсь получить его как ByteArray с .DownloadToByteArray, но моя первая попытка - выбросить ошибки.

Почему появляются лишние символы и пробелы при получении через Powershell, но не при просмотре в блокноте. Правильно ли я считаю, что это простая проблема кодирования?

1 Ответ

0 голосов
/ 03 января 2019

Да, это проблема с кодировкой. Если файл кодируется с помощью UTF8, вы должны использовать UTF8 для его декодирования. Если кодирование выполняется с использованием Unicode, вы должны использовать Unicode для его декодирования.

Тогда в вашем случае я думаю, что он использует юникод. Вы должны использовать Unicode для его декодирования, например $encoding = [System.text.Encoding]::Unicode.

Я могу воспроизвести вашу проблему и протестировать ее с кодировкой UTF8 (не работает), но работает с Unicode.

UTF8:

enter image description here

Unicode:

enter image description here

...