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
相关产品推荐
相关产品推荐

