Let*_*man 57 uri path backslash
似乎Windows坚持\在文件路径中写反斜杠,而.NET的URI类用斜杠写它们/.有没有正确的方法,即使在最原始的系统中也可以接受?为什么.NET的URI显示与Windows其他部分相比的其他斜杠?
Jed*_*ith 69
在这方面,Windows是操作系统的混蛋子,但是很多API也会接受正斜杠.在Windows上,文件路径如下所示:
C:\Users\jsmith\Documents\file.txt
Run Code Online (Sandbox Code Playgroud)
在类Unix系统(包括Mac OS X和Linux)上,相同的路径如下所示:
/home/jsmith/Documents/file.txt
Run Code Online (Sandbox Code Playgroud)
一个URL,在规范RFC 1738,始终使用正斜杠,与平台无关的:
http://home.example.com/Documents/file.txt
Run Code Online (Sandbox Code Playgroud)
其原因是历史性的.甚至Windows都无法改变我们对URL的看法.当你谈论反斜杠时,你会发现使用它们的唯一平台是Windows(以及其他一些新颖的平台).
你可能会看到除Windows以外使用的反斜杠是UNC路径 - 但是,Windows也是这些路径的主要支持者:
\\HOMESVR\Documents\file.txt
Run Code Online (Sandbox Code Playgroud)
无论你做什么,都不要为你的网站做广告,并说"我的公司dot com反斜杠推广".
Ben*_*mes 53
文件路径和URI是不同的.\在Windows文件路径中/是正确的,并且在URI中是正确的.
所以这个文件路径:C:\Documents\Foo转换为这个URI:file:///C:/Documents/Foo
And*_*eck 35
原因是一段历史.创建UNIX时,或者我应该说UNICS时,他们选择/作为目录的分隔符.在这些日子里,存储介质相当小,根目录中的每个目录都是另一个安装的存储设备(/ bin/lib等).
当Microsoft发布MS-DOS版本1.0时,它没有目录支持.他们使用/ character作为程序中的参数(program/a/b)
MS-DOS 1.0,Q-DOS的快速重新命名,是一个CP/M派生的操作系统,它继承了驱动器号(A:C:等)
在后来的版本中,他们想要添加一些目录支持,他们选择使用\,因为/已经在他们的操作系统中有另一种含义.
在现代操作系统中有许多计算机历史的工件,我想大多数人都没有意识到,但仍然对它们的工作方式产生重大影响.
那么,正确的方法是什么?如果有的话,我会说它是/因为类似UNIX的操作系统在微软实现对DOS的目录支持之前是这样的.
Rub*_*ias 13
作为旁注和谈论.NET,您应该使用System.IO.Path.DirectorySeparatorChar获取当前路径分隔符.
小智 12
我可以确认:上面的很多消息都是假的......
Windows 接受两者/或\
Linux 只接受/
这是因为当您在 Windows 下开发 PHP 时,您使用/. 它兼容 Windows 或 Linux...
Mic*_*urr 10
至于文件系统路径分隔符,我相信在Windows上所有的 API都会接受正斜杠(但也许有一些没有的错误) - 问题是大多数应用程序不接受它们(或者错误地解析它们) ).
事实上,如果我没记错的话,自从MS-DOS开始支持子目录(v2.0)以来,即使MS-DOS也接受了'/'作为API级别的路径分隔符 - 但到那时'/'字符已经被建立为命令行选项的'switch'字符,因此反斜杠成为DOS(以及后来的Windows)上的事实路径分隔符.
URI是与文件路径类似但不同的动物,URI应始终使用"/"来分隔组件.Windows应用程序和API可能接受'\'作为URI中的分隔符,可能是因为人们熟悉在这些系统上使用反斜杠作为分隔符,并且URI也可用于表示本地文件.
当天无用的琐事 - 在MS-DOS的早期版本中,有一个API可以更改命令行选项切换字符(通常从'/'到' - '),因此命令可能看起来更像Unix,命令会接受'/'作为命令行上的路径分隔符.API不太成功(我想因为它没有被应用程序普遍支持),并且在以后的版本中被删除了.
嗯...在二读时,这整个答案几乎是毫无用处的琐事.
Web 基于 UNIX 方式,用斜杠 (/) 分隔路径中的目录。Windows 用反斜杠 (\) 分隔目录
正确的方法取决于它的用途。对于 Windows 计算机上的本地文件的路径,请使用反斜杠。对于位于基于 UNIX 的计算机(包括 Mac、Linux)上的 Web 资源或文件的路径,请使用斜杠。
.NET 的 URI 使用正斜杠的原因是它的格式适合在 Web 浏览器中使用。
服务器将完成所有必要的工作,将网络资源链接到硬盘上的文件。
| 归档时间: |
|
| 查看次数: |
76026 次 |
| 最近记录: |