Можно ли указать тип кодировки при загрузке файла в большой двоичный объект хранилища Azure с помощью командлета Set-AzureStorageBlobContent или ConvertTo-Json?
У меня есть сценарий 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 ответа
Разобрался с решением:
$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-объект.
Конечно, вы можете попробовать команду ниже.
Set-AzureStorageBlobContent -Context $context -Container "111" -File "C:\Users\joyw\Desktop\testjson.json" -Properties @{"ContentEncoding" = "UTF-8"} -Force
Поймайте запрос PowerShell, вы найдете x-ms-blob-content-encoding: UTF-8
,