Azure翻译API转存Blob存储时Unicode转义问题求助
解决Azure翻译API结果存储到Blob时的Unicode转义问题
问题根源
你的问题出在将翻译后的字典序列化上传到Blob时的JSON处理环节。当前代码中,翻译后的translated_dict本身包含正常Unicode字符(如Kłodawa),但如果上传Blob时使用json.dumps()未指定ensure_ascii=False,非ASCII字符会被自动转义为Unicode编码(如\u0142)。本地保存正常也验证了translated_dict本身无问题,问题仅出在后续上传的序列化步骤。
解决方案
1. 上传Blob时正确序列化字典
将translated_dict转换为JSON字符串上传时,必须添加ensure_ascii=False参数,保留非ASCII字符不转义:
# 示例:使用azure-storage-blob库上传 from azure.storage.blob import BlobServiceClient import json def upload_to_blob(translated_dict, connection_string, container_name, blob_name): # 序列化字典为JSON字符串,保留非ASCII字符 json_content = json.dumps(translated_dict, ensure_ascii=False) # 转换为UTF-8编码的字节流 content_bytes = json_content.encode('utf-8') blob_service_client = BlobServiceClient.from_connection_string(connection_string) blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name) blob_client.upload_blob(content_bytes, overwrite=True)
2. 可选:直接使用API返回的JSON字符串上传
若不想重新序列化字典,可直接将API返回的translated_json_text编码为UTF-8字节流上传:
# 直接使用翻译API返回的translated_json_text content_bytes = translated_json_text.encode('utf-8') # 后续上传代码同上
3. 验证中间结果
上传前可打印translated_dict内容,确认字符串是正常的Kłodawa而非转义后的K\u0142odawa,快速排查问题环节:
print(translated_dict['title']) # 预期输出:Built-up property located in Rgielew, Kłodawa commune
额外需求处理(获取纯ASCII文本)
若你需要不带重音的Klodawa,可使用字符串归一化工具去除重音:
import unicodedata def remove_accents(text): return unicodedata.normalize('NFKD', text).encode('ascii', 'ignore').decode('utf-8') # 使用示例 clean_title = remove_accents(translated_dict['title']) # 输出:Built-up property located in Rgielew, Klodawa commune
内容的提问来源于stack exchange,提问作者naif hussain
相关产品推荐
相关产品推荐

