Если ваша кодировка BLOB не UTF-8
, она не может изменить ее. И вы сказали, что хотите использовать create_blob_from_text
, чтобы сделать это, поэтому я предполагаю, что ваш текстовый файл не UTF-8
, и вы хотите изменить его на UTF-8
, чтобы загрузить его.
Во-первых, вы должны знать, если ваш текстовый файл UTF-8
, вам не нужно ничего менять, просто загрузите его, он все равно будет UTF-8
. Однако, если ваш файл не UTF-8
, он не будет преобразован в UTF-8
, он будет закодирован в UTF-8
с оригинальной кодировкой. Если бы вы могли это понять, вы знаете, как загрузить свой файл в azure blob с кодировкой UTF-8
.
Как показано ниже, я загружаю текстовый файл с кодировкой GBK
.
txt= open('D:/hello.txt').readline() # GBK Tex
charset = 'UTF-8'
block_blob_service.create_blob_from_text(container_name='test',blob_name='test-gbk.txt',text=txt.encode('ISO-8859-1').decode('GBK'),encoding=charset)
Ниже приведен пи c, слева - исходный файл с кодировкой GBK
, справа - файл, загружаемый из BLOB-объекта azure, закодированного с помощью 'UTF-8'.
Обновление : я открываю текстовый файл для BytesIO
и загружаю его с кодом ниже. Вы можете игнорировать latin-1
.
text=open('E:/test.txt',encoding='latin-1').readline()
charset = 'UTF-8'
buf=BytesIO(text.encode('ISO-8859-1').decode('ANSI').encode('UTF-8'))
block_blob_service.create_blob_from_stream(container_name='test',blob_name='test.txt',stream=buf)