【发布时间】:2019-11-29 21:01:37
【问题描述】:
我在 GitHub markdown、VSCode markdown extension 和其他地方也注意到了一个小故障。它在 GitHub 上和使用 git 时表现得特别不寻常。
当我输入诸如# heading 或## sub-heading 之类的标题时,标题经常无法正确呈现。下面是一个 Markdown 文件的提交示例:
来源差异:
丰富的差异:
如您所见,丰富的差异没有正确呈现,当我进入“浏览文件”时文件也没有正确呈现(无论我使用什么计算机/设备):
不知何故,在删除### 之后的空格字符并重新键入它之后,有一些更改要提交。据我所知,这不应该发生(因为实际上没有任何改变,我只是重新输入了空格字符)。但我还是提交了它并得到了以下差异:
如您所见,空格字符已突出显示。现在我神奇地得到了以下丰富的差异,现在显示了标题:
现在,当我“浏览文件”时,标题会显示在我使用的每台计算机上:
这发生在我的很多人身上,我想知道为什么会发生这种情况,git 是如何做到不进行任何更改的,以及是否有办法解决这个问题?
这绝对不仅仅是我,因为其他人过去也向我提到过。
注意:我的 GitHub 存储库是私有的,所以我不能分享链接,但它应该很容易复制。
更新
我在 HxD 中打开了带有问题的修订版,并得到以下十六进制输出:
然后我替换了 VSCode 中的空格字符并得到以下十六进制输出:
有一个额外的Â 字符没有显示在 VSCode 中,我也没有输入。我在 Windows 和 Mac OS 上都遇到过这个问题。
更新 2
ascii 和 utf-8 都将字符定义为 Â,所以我不知道为什么它没有出现在 VSCode 或 GitHub 文本编辑器中。
我还在 https://www.asciitable.com/ 上看到 ascii 将其定义为以下内容
【问题讨论】:
-
“git 是如何实现不做任何更改的” – 嗯,问题是存在 差异,正如您从事实上存在差异。
###和标题之间的空格很可能不是正常的空格,这也可能是 Markdown 解析器不将其作为标题的原因。您可以复制/粘贴确切的字符串,以便我们检查那里使用的实际字符吗?您还可以在十六进制编辑器中打开文件并查看其中的实际字节以找出实际存在的字符。 -
\xa0 是“不间断空格”,我猜 github 的降价不能将其识别为标题中的有效空格字符