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

BlobClient.DownloadContentAsync获取存在文件返回异常值问题

解决Azure Blob存储XSLT文件DownloadContentAsync返回乱码的问题

针对你遇到的单个XSLT文件下载后出现乱码(类似“��”)的情况,大概率是编码或Blob元数据设置问题,以下是几点排查和解决方向:

  • 编码不匹配导致乱码
    这个XSLT文件可能采用了UTF-16(带LE BOM)或其他非UTF-8编码存储,而BlobDownloadResult.Content.ToString()默认用UTF-8解码,就会出现乱码。不要直接调用ToString(),先获取原始字节流,根据文件实际编码解析:

    var downloadResult = await blobClient.DownloadContentAsync();
    byte[] contentBytes = downloadResult.Content.ToArray();
    
    // 检测字节顺序标记(BOM)判断编码
    Encoding targetEncoding = Encoding.UTF8;
    if (contentBytes.Length >= 2 && contentBytes[0] == 0xFF && contentBytes[1] == 0xFE)
    {
        targetEncoding = Encoding.Unicode; // UTF-16 小端
    }
    else if (contentBytes.Length >= 3 && contentBytes[0] == 0xEF && contentBytes[1] == 0xBB && contentBytes[2] == 0xBF)
    {
        targetEncoding = Encoding.UTF8;
    }
    
    string xsltContent = targetEncoding.GetString(contentBytes);
    
  • Blob的Content-Type元数据错误
    检查这个XSLT文件在Blob存储中的Content-Type属性,如果设置成了非文本类型(比如application/octet-stream),可能影响后续的编码解析。可以手动更新元数据:

    await blobClient.SetHttpHeadersAsync(new BlobHttpHeaders
    {
        ContentType = "application/xml; charset=utf-8"
    });
    

    也可以在Azure Portal中找到该Blob,进入“属性”页直接修改Content-Type值。

  • 文件上传时的编码问题
    上传这个XSLT文件时,可能本地保存的编码和上传时的处理不一致,导致Blob中存储的字节本身就有问题。建议本地用UTF-8编码重新保存该XSLT文件,然后重新上传覆盖Blob中的旧文件。

内容的提问来源于stack exchange,提问作者Mandar Jogalekar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 08:31:01