Можно ли указать тип кодировки при загрузке файла в большой двоичный объект хранилища Azure с помощью командлета Set-AzureStorageBlobContent или ConvertTo-Json? - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть сценарий PowerShell, который загружает файл JSON, сохраненный в BLOB-объекте учетной записи хранения Azure. Этот файл в кодировке UTF-8. Затем сценарий читает из JSON, вносит изменения, создает новый файл JSON с тем же именем и выгружает его обратно в учетную запись хранения с помощью командлета Set-AzureStorageBlobContent. Однако все приложения, которые использовали этот файл JSON, перестали работать. После нескольких часов поиска и устранения неисправностей я заметил, что когда он загружает новый JSON обратно в контейнер хранения (заменяя существующий), он загружает JSON в кодировке UTF-16.

Есть ли параметр в командлете Set-AzureStorageBlobContent, в котором можно указать кодировку? Я изучил официальную документацию, но не смог найти ответ.

Перед загрузкой нового JSON-файла все значения сохраняются в переменной, и я фактически использую командлет ConvertTo-Json для генерации нового JSON-файла. Есть ли в ConvertTo-Json параметр для указания типа кодировки?

Прямо сейчас, все, что я использую для загрузки файла:

$jsonContent | ConvertTo-Json -Depth 4 | Out-File C:\P3\myFile.json

Set-AzureStorageBlobContent -Context $storageContext -Container "myContainer" -File "myFile.JSON"  -Force

Пожалуйста, сообщите!

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Разобрался с решением:

$JSONConvert = $jsonContent | ConvertTo-Json -Depth 4
$JSONEncode = [System.Text.UTF8Encoding]::new($false) 
[System.IO.File]::WriteAllLines('C:\P3\myFile.JSON',$JSONConvert ,$JSONEncode)

Set-AzureStorageBlobContent -Context $storageContext -Container "myContainer" -File "myFile.JSON" -Properties @{"ContentEncoding" = "UTF-8"} -Force

Это загрузит файл JSON в кодировке UTF-8 в BLOB-объект.

0 голосов
/ 09 ноября 2018

Конечно, вы можете, попробуйте команду ниже.

Set-AzureStorageBlobContent -Context $context -Container "111" -File "C:\Users\joyw\Desktop\testjson.json" -Properties @{"ContentEncoding" = "UTF-8"} -Force

enter image description here

Поймайте запрос PowerShell, вы найдете x-ms-blob-content-encoding: UTF-8.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...