【问题标题】:Edit text by GitHub users using different character encodingsGitHub 用户使用不同的字符编码编辑文本
【发布时间】:2020-05-12 18:06:09
【问题描述】:
(我记得不久前阅读过解决此问题的方法,但找不到该帖子!)
我通过 github 与研究助理互动。我在 linux 机器上工作,其他机器在 mac 或 windows 上工作。
编辑文本时,特殊字符通常会引发问题。有没有办法将存储库的字符编码设置为 UTF-8(作为我的机器),同时让其他人在编辑文件时依赖他们的本机字符编码? (This 表明并非所有事情都是直截了当的,我总是对字符编码问题感到困惑......)
是否有协议可以防止在提取他们的工作时弄乱文本?
谢谢!
【问题讨论】:
标签:
git
github
character-encoding
【解决方案1】:
我不确定,但我可以建议在全局配置中设置,我能想到的另一种方法是创建自定义 git 挂钩。
【解决方案2】:
如果您有文本文件,除非另有说明,否则 Git 通常假定它们是 UTF-8 格式。您可以使用其他编码,但如果您在存储库中使用其他编码,git diff 之类的内容可能会或可能不会按您预期的方式运行。
话虽如此,对于使用其他系统(尤其是 Windows)的人来说,在工作树中使用其他编码可能很有用。不幸的是,即使在 2020 年,仍有许多 Windows 程序无法使用 UTF-8,并且只能在带有 BOM 的 little-endian UTF-16 中运行。允许人们在自己的系统上指定自己的工作树编码设置对这些人很有帮助。如果您的项目使用的语言需要使用 UTF-8,例如 Go 或 Rust,那么这可能不是问题,因为使用 UTF-16 的工具根本不起作用。
您可以在您的存储库中指定 working-tree-encoding=UTF-8,这将导致 Git 执行无操作编码,并且如果输入不是 UTF-8 则失败。这会使它稍微慢一些,但它会保护您免受将无效内容放入代码库的用户(假设无效内容不是有效的 UTF-8)。如果愿意,用户仍然可以覆盖 .git/info/attributes 中的该设置。
您可能还希望设置一个.editorconfig 文件,告诉用户的编辑器这些文件将采用UTF-8 格式。有些编辑器原生支持EditorConfig files,有些需要插件,但这是一个选项。请注意,如果您这样做,人们将很难在他们愿意的情况下覆盖其个人系统上的编码。