如何转义多个 FS 上文件名中的无效字符

发布于 2024-08-20 03:46:14 字数 322 浏览 2 评论 0原文

如何转义文件名中的无效字符?我之前问过一次这个问题并用解决方案写了一堂课。现在我想延长它。我的网站将能够检测用户使用的操作系统。因此,基于此,我要么 1) 希望根据用户所在的 FS/OS 进行转义,要么 2) 进行转义,以便它适用于所有文件系统。

哪些字符在 Windows 7 或 Linux 上有效(我不确定我当前的 Linux FS 设置为什么),在 XP 上无效,或者在 Windows 或 Mac 上有效但在 Linux 上无效?

How do i escape invalid characters in filenames? I ask this question once before and wrote up a class with the solution. Now i would like to extend it. My site will be able to detect what OS the user is on. So base on that i either 1) Want to escape based on the FS/OS the user is on or 2) Escape it so it works on all filesystems.

What characters may be valid on windows 7 or linux (i am unsure what my current linux FS is set to) and invalid on XP or valid on windows or mac and not on linux?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

懷念過去 2024-08-27 03:46:14

目录的名称是否会显示给用户?如果是,它是否需要看起来像用户名(基于另一个问题中的信息)?如果没有,您可以将其拆分为字符数组,将每个字符的值转换为其十六进制表示形式,然后将它们组合在一起形成一个字符串。这应该适用于任何文件系统。

private static string ToHexString(string input)
{
    return string.Join("", input.ToCharArray()
        .Select(c => string.Format("{0:x}", (int)c))
        .ToArray());
}

Will the name of the directory ever be displayed to a user and, if so, does it need to look like the user name (based on info in the other question)? If not, you could split it to a character array, convert the value of each character to its hexadecimal representation and put those together to a string. That should work on any file system.

private static string ToHexString(string input)
{
    return string.Join("", input.ToCharArray()
        .Select(c => string.Format("{0:x}", (int)c))
        .ToArray());
}
感受沵的脚步 2024-08-27 03:46:14

解决方案

  1. 将它们设置为 [A-Za-z._-] 并转义不属于该范围的字符
  2. 选择您支持的操作系统和 FS,找出非法或非法的内容并支持这些内容,直至另行通知

solutions

  1. Make them [A-Za-z._-] and escape characters that do not fall in the range
  2. Choose your supported OS and FS and find out what is illegal or not and support those until further notice
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文