Link 到 Bitbucket Markdown 中带空格的文件名

Link to filenames with spaces in Bitbucket Markdown

假设我有一个 README.md,我想创建一个 link 到名称中包含空格的文件 file with spaces.md。我希望能够跳转到文件的源代码。

/
 -- README.md
 -- File with spaces.md

在浏览器中检查元素后,我想出了 href 应该是什么(手动更改它,然后单击它使我进入我想要访问的页面):

<a href="username/repository/src/c0mm1th4sH/File%20with%20%spaces.md">

很遗憾,我无法做到这一点。到目前为止我尝试过的一些事情:

[Link](File with spaces.md)
[Link](File%20with%20spaces.md)
[Link](File\ with\ spaces.md)
[Link]("File with spaces.md")

它在 Bitbucket 中产生以下 HTML:

<a href="/username/repository/src/c0mm1th4sH/File%2520with%2520spaces.md">
<a href="/username/repository/src/c0mm1th4sH/File%2520with%2520spaces.md">
<a href="/username/repository/src/c0mm1th4sH/File%5C%2520with%5C%2520spaces.md">
<a href="" title="File with spaces.md">

你可以玩我创造的example repository

更新:bug 消失了,所以 现在可以工作了。

我用

[Title](/username/repo/Name-file-with-)

并且有效!

这似乎对我很有效:将 space 替换为 &#32;

Source

[Link](File&#32;with&#32;spaces.md)

用 - 代替空格

例如,对于文件名 'Hello World.md',您的降价将如下所示

[link_caption](./Hello-World.md)

不同的 Markdown 实现(甚至是这些的版本)在处理这些问题的方式上有所不同。我发现以下信息非常有用(在页面完全加载后单击 "preview" - 这需要一段时间):

http://johnmacfarlane.net/babelmark2/?text=%5B1%5D(is+not)+OK%2C%0A%5B2%5D(is%2520not)+OK%2C%0A%5B3%5D(%22is+not%22)+OK%2C%0A%5B4%5D(%22is%2520not%22)+OK%2C%0A%5B5%5D(is%5C+not)+OK.%0A

总结如果 link 停止工作...针对许多不同的实现显示了五种不同的可能性:

[1](is not) OK,
[2](is%20not) OK,
[3]("is not") OK,
[4]("is%20not") OK,
[5](is\ not) OK.

似乎所有的地方都有效,但 #2 似乎在任何地方(或几乎所有地方)都有效,并且每个其他选项至少在一种情况下失败。

输出:

标记 0.5.2,MD4C 0.2.7,MD4C(严格)0.2.7,标记 0.15.6.0

[1](不是)OK,2 OK,3 OK,4 OK,[5](是\不是)OK。

commonmark.js 0.28.1, markdown-it 8.4.2

[1](不是)OK, 2 OK, 3 OK, 4 OK, 5 OK.

Markdown.pl 1.0.1,Python-Markdown 2.6.5

1个好,2个好,3个好,4个好,5个好。

Markdown.pl 1.0.2b8

[1](不是)OK,2 OK,3 OK,4 OK,[5](是\不是)OK。

pandoc(严格)2.5

1个好,2个好,3个好,4个好,5个好。

cheapskate 0.1.0.5,Parsedown 1.6.0

[1](不是)OK,2 OK,3 OK,4 OK,[5](是\不是)OK。

pandoc 2.5

1个好,2个好,3个好,4个好,5个好。

月球标记 0.4.0

[1](不是)OK,2 OK,3 OK,4 OK,[5](是\不是)OK。

红地毯 3.3.4

1个好,2个好,3个好,4个好,5个好。

RDiscount 2.1.8

1个好,2个好,3个好,4个好,5个好。

PHP Markdown 1.8.0,PHP Markdown Extra 1.8.0

[1](不是)OK,2 OK,3 OK,4 OK,[5](是\不是)OK。

Maruku 0.7.3.beta1,Maruku(支持数学)0.7.3.beta1

1ot) OK, 2 OK, 3ot“) OK, 4 OK, 5ot) OK.

MultiMarkdown 5.1.0

[1](不是)OK,2 OK,[3](“不是”)OK,4 OK,[5](不是)OK。

黑色星期五

1 好的, 2 好的, [3](“不是”)好的, 4 好的, 5 好。

kramdown 1.2.0, mistune 0.8.3

1个好,2个好,3个好,4个好,5个好。

MultiMarkdown 6 6.3.0

1个好,2个好,3个好,4个好,5个好。

s9e\TextFormatter (Fatdown/PHP)

[1](不是)OK,2 OK,[3](“不是”)OK,4 OK,[5](不是)OK。

cebe/markdown 1.2.0,cebe/markdown GFM 1.2.0,cebe/markdown MarkdownExtra 1.2.0

[1](不是)OK,2 OK,3 OK,4 OK,[5](是\不是)OK。

Gambas 3.8.90

1个好,2个好,好,好,5个好。

对决 1.7.4

[1](不是)OK,2 OK,3 OK,4 OK,[5](是\不是)OK。

对决(风味:github)1.7.4

[1](不是)好的, 2 好的, 3 好的, 4 好的, [5](是\不是)好的。

根据 Markdown specification,link 目标由 URL 指定。在 URL 中,space 被编码为 +%20.

W3Schools - URL Encoding:

URLs cannot contain spaces. URL encoding normally replaces a space with a plus (+) sign, or %20.

但由于 + 并非在任何地方都受支持(GitHub、MDX 等;请参阅下面的评论),最好 使用 %20

事实上,Bitbucket 方面存在一个错误,但是,该错误现在已修复。

假设您的文件名为File with spaces.md,您要显示的文本为Link,这两种方法中的任一种will work:

* [Link](File with spaces.md)
* [Link](File%20with%20spaces.md)

如果您使用的是 VS Code,那么您可以通过一种简单的方法获得 link 在线 github 以及本地降价评论。

查看我收到的 link,用一个空格替换了 link,它与浏览器兼容。

由此
User-Login: JWT and SQLAlchemy/README.md
对此
./User-Login:%20JWT%20and%20SQLAlchemy/README.md