0

我使用 eclipse 和 eGit 来提交我的 java 代码。

但是当我用 æ,ø 或 å 提交字符串(或其他)时,它会在 Github 上更改为特殊字符。这是一个问题,因为当我拉动时,它会返回那些特殊字符!

我可以强制 git/eGit/Github 使用æ、ø 和 å。我猜加密不是utf-8?

问题出现在 Windows 7 和 Linux (Ubuntu) 上。当我推送到 github 时会发生这种情况(通过 eclipse 和 eGit,也可以通过命令行出现同样的问题)。Ø 改为 ? 符号。这是它在eclipse中的样子:

Element str = doc.createElement("Størrelse"); 

这是它在 github 上的样子

Element str = doc.createElement("St�rrelse");

当我从 github 拉取时,我会得到这个:

Element str = doc.createElement("Størrelse");

我可以强制 github 使用 UTF-8 编码,或者以其他方式解决编码问题吗?

4

4 回答 4

2

这 100% 不是 git 问题。Git 不会以任何方式触及文件的编码。

这可能是 GitHub显示问题(注意:GitHub 永远不会更改您的 repo 的内容,因此也不会更改任何编码)。但是由于您的客户也遇到了问题,GitHub 在这里可能没有错。

问题可能是由您的编辑器引起的。您的文件内容在写入时似乎被编码为 UTF-8,但您用来打开文件的编辑器假定它是 latin-1。尝试检查您的编辑器设置。

于 2013-07-04T11:26:34.953 回答
2

Git 将文件视为字节流。它不会更改文件的内容,也不关心它们是如何编码的。

它还将文件名视为字节流(这在将文件名规范化为分解的正常形式的 macos 上中断,因此有一些解决方法)。它也不会更改您的文件名。

问题在于 Eclipse 是如何编写文件的,它们是如何在 github 上显示的,以及它是如何在 Eclipse 的其他安装中显示的。确保您在两台计算机上的 eclipse 中都设置了 utf-8 编码。

也就是说 git 实际上有一种方法可以让 git 在签入和签出文件时对其进行修改,但除了转换换行符(Windows 安装程序将让您打开,我强烈建议您不要这样做)之外,您还必须设置所谓的“干净”和“涂抹”过滤器,如果你没有这样做,git 就不会触及你的文件内容。

于 2013-07-04T11:30:00.023 回答
0

添加元,最终完美运行。我知道,这个问题得到了回答,但这并不是你想知道的,所以我想我也展示了这个帖子,以便其他人可以使用它。

<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
于 2015-04-20T19:28:08.457 回答
0

我假设当您说“在 github”时,您会想到通过其 Web 界面查看文件,并且文件在本地文件系统的新克隆中是可以的

这只是意味着您和 github 不同意您的文件编码,并且是跨平台问题的一个非常常见(但微妙)的原因。

我建议你:

  • 避免在文件名中使用除普通 ASCII 以外的任何内容。
  • 在 Java 源代码中对非 ASCII 字符使用 \uXXXX 语法。

现在学习这样做,很可能会在以后为您节省很多问题。

于 2013-07-04T11:07:34.657 回答