在asp.net網站上,用戶試圖上傳文件作爲電子郵件附件,其中包含文件名中的emdash。當發送此作爲電子郵件附件(交換服務器)的文件中得到了轉化爲_utf8_B_ * ** * .DAT如何測試文件名中的非ASCII字符
所以,一個.aspx頁面中,我需要能夠如果檢測emdash存在於作爲Request.Files集合的一部分上載的文件的文件名中。
string s = "a—b-";
byte[] arr = Encoding.ASCII.GetBytes(s);
foreach (byte element in arr)
{
Response.Write(element.ToString() + ",");
}
上面的字符串有一個emdash作爲第二個字符和一個普通的連字符作爲第四個字符。
上面的代碼打印97,63,97,45到屏幕上。
我認爲作爲一個emdash不是一個有效的ASCII字符,要麼會拋出一個錯誤,要麼有些跡象表明它不是一個有效的ASCII字符。但它返回63.
如何檢測文件名中的emdash,以便我可以對用戶說'您的文件名中包含無效字符'?我在這個問題上看到了其他問題,我無法讓他們工作。
從http://www.asciitable.com/可以看出63是問號的值。當您調用ASCII.GetBytes時,它會強制將字符轉換爲ASCII,並在字符無法轉換時使用問號。 – David