HTML:如何使用 href 到 link 到以 # 字符开头的文件名

HTML: how to use a href to link to a file name that starts with # character

我有很多文本文件,其名称以#(哈希)符号开头。重命名文件会很麻烦

如果我尝试 link 到 HTML 文件中的文本文件,使用 <a href="#example.txt"> 浏览器会将前导 # 字符解释为“片段标识符”。

我的要求是 link 在浏览器中打开文本文件。

我试过像这样替换前导 # 字符:

<a href="#35;example.txt"> 
<a href="#&23;example.txt">

但这不起作用(文本文件未打开)。

是否有 HTML 解决方法,或者是否需要 JavaScript?

如果您确实需要这样做,可以尝试将 "#" 替换为 %23。它应该有效。

如果您能够重命名您的文件,使它们不包含 "#" 字符,您将避免很多很多的痛苦。

只要他们这样做,您可能会遇到当前和未来的跨浏览器问题,代表未来开发人员处理您的代码的困惑(或者将来当您忘记 ins 时代表您的困惑)和编码外)等

此外,某些 Unix/Linux 系统不允许在文件名中使用“#”。不确定您使用的 OS 是什么,但是您的文件名应该尽可能跨 OS 可移植,即使您现在“确定”您永远不会 运行 在其中一个系统上。

问题-

href 文件名前面有 # 加载文件失败。这是因为您需要 URL 编码 符号。

解-

使用 %23,这是 # 的 URL 编码。

例子-

如果你想使用 href 到 link 一个名为 #test.html 的文件,你可以这样做 -

<a href="%23test.html">Click Me!</a>

推荐-

不要使用名称中带有 # 的文件名。

如果您想重命名您正在使用的目录中的所有文件,这里有一个 bash 脚本可以为您完成。

#!/bin/bash

target="/home/user/directory/change/"
for f in "$target"/*
do
    letter=$(basename $f | cut -c1-1)
    if [ "$letter" == "#" ]; then
        withoutHash=$(basename $f | cut -c 2-)
        mv  $f $withoutHash
    fi 
done

这个 bash 脚本应该很容易理解,但 Stack Overflow 上肯定有一些内容。尝试设置一个测试目录并使用它。如果需要,您可以很容易地弄清楚如何遍历子目录。

您必须删除文件名中的#。 # 表示一个 id,浏览器认为它是一个 id 并在页面上查找它。