gpt4 book ai didi

c# - 如何测试文件名中的非 ASCII 字符

转载 作者:行者123 更新时间:2023-11-30 22:17:10 25 4
gpt4 key购买 nike

在 asp.net 网站上,用户尝试将文件作为电子邮件附件上传,文件名中包含破折号。将其作为电子邮件附件(交换服务器)发送时,文件已转换为 _utf8_B_****.dat

因此,在 .aspx 页面上,我需要能够检测作为 Request.Files 集合的一部分上传的文件的文件名中是否存在 emdash。

string s = "a—b-";

byte[] arr = Encoding.ASCII.GetBytes(s);
foreach (byte element in arr)
{
Response.Write(element.ToString() + ",");
}

上面的字符串的第二个字符是破折号,第四个字符是普通的连字符。

上面的代码将 97,63,97,45 打印到屏幕上。

我假设 emdash 不是有效的 ASCII 字符,因此会抛出错误或某些指示表明它不是有效的 ASCII 字符。然而它返回 63。

如何检测文件名中的破折号,以便我可以对用户说“您的文件名中包含无效字符”?我在这个问题上看到了其他问题,我无法让他们工作。

最佳答案

这应该可以解决问题:

    foreach (char c in s) {
if (c >= 128) {
Response.Write("Non-ascii char detected: {0}", c);
}
}

我相信 Encoding.ASCII.GetBytes 首先转换为 ASCII,因此您在调用它时永远不会看到非 ASCII 字符。

关于c# - 如何测试文件名中的非 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16897903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com