Azure storage blob Content-Disposition 中文亂碼

筆記下載檔案 API 回傳 SAS 下載中文檔案連結的那話兒

結論

var displayName = "中文 檔案.txt";
dislayName = UrlEncoder.Default.Encode(displayName);
sasBuilder.ContentDisposition = 
    $"attachment; filename* = UTF-8''{displayName} ";

說明

首先使用 .Net 7 的 UrlEncoder 來對中文進行網址編碼

然後把 filename = {displayName} 改成 filename* = UTF-8''{displayName}

參照

探究 Content-Disposition:解决下载中文文件名乱码_liuyaqi1993的博客-CSDN博客

UrlEncode() 與空白變加號問題-黑暗執行緒 (darkthread.net)

UrlEncoder Class (System.Text.Encodings.Web) | Microsoft Learn

建立容器或 blob 的服務 SAS - Azure Storage | Microsoft Learn

PS5