在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