You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 20:50:53