我正在使用WebClient將項目上傳到Web應用程序。如何在使用WebClient的SLUG標題中設置編碼
我試着用下面的代碼,但服務器不能識別在slug頭文件中定義的特殊字符,並用其他不可打印的字符替換它們。
WebClient.Headers.Clear();
WebClient.Headers.Add("Content-Type",GetMimeType(Path.GetExtension("aáñÑ.pdf")));
WebClient.Headers.Add("Accept", "*/*");
WebClient.Headers.Add("Referer", myRefererURL);
WebClient.Headers.Add("x-csrf-token", "securityTokenFromModel");
WebClient.Headers.Add("slug", "aáñÑ.pdf");
而且,讀RFC2047(http://www.ietf.org/rfc/rfc2047.txt)後,我替換爲下面的代碼的最後一行,但服務器無法識別該請求並返回一個錯誤。
WebClient.Headers.Add("slug", "(=?ISO-8859-1?q?" + "aáñÑ.pdf" + "?=)");
有另一種方式來設置enconding字符集,允許在塞頭使用特殊字符(重音,西班牙字符)?
編輯:
閱讀@Julian的答案後,我試圖改變Slug頭看起來像這樣:
WebClient.Headers.Add("slug", "The Beach at S%C3%A8te");
但Web應用程序恰好設置文件名:「在S%海灘C3%A8te」。
在另一個試驗,這是提琴手是如何顯示文件名使用 「DocumentaciónÑñ.docx」 的要求:
請求由Internet Explorer 11發:OK
請求通過.NET做Web客戶端和谷歌Chrome:ERROR
有你試圖逃跑由'System.Web.HttpUtility蛞蝓值.HtmlEncode()'?我的意思是像WebClient.Headers.Add(「slug」,「(=?ISO-8859-1?q?」+ System.Web.HttpUtility.HtmlEncode(「aáñÑ.pdf」)+ 「?=)」);'This。 –
謝謝@Ali,但它不起作用。使用WebClient.Headers.Add(「slug」,「(=?ISO-8859-1?q?」+ System.Web。 HttpUtility.HtmlEncode(「aáñÑ.pdf」)+「?=)」);從服務器返回一個錯誤並使用WebClient.Headers.Add(「slug」,「(System.Web.HttpUtility.HtmlEncode(」aáñÑ.pdf 「));使用編碼字符設置文件名。 –
我認爲你需要在發送之前將文件名編碼到「ISO-8859-1」中。檢查此:http://stackoverflow.com/questions/629617/how-to-convert-string-to-iso-8859-1 –