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 并在页面上查找它。
我有很多文本文件,其名称以#(哈希)符号开头。重命名文件会很麻烦
如果我尝试 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 并在页面上查找它。