在又一次 git pull 之后,我的项目停止了构建,并带有一堆消息:
error: unmappable character for encoding UTF-8
这些消息指向在某些文件标题中找到的版权符号。还有更多具有相同符号的文件,但它们似乎编译得很好。在二进制编辑器中查看时,好的显示为:
C2 A9
虽然不好
A9
在 vim 中查看时,两者都显示为 © (<©> 169, Hex 00a9, Octal 251),但 IntelliJ Idea 将坏的显示为菱形。
所以我决定我在合并时弄乱了一些东西(拉后有合并冲突),然后去看看哪些文件发生了变化
git diff-tree --no-commit-id --name-only -r --full-index --binary 91cbe7b753d39905372c1ea41e04e7a3dbd2566e
但它不会产生任何结果。也没有发现上一次提交的更改。日志如下所示:
commit 91cbe7b753d39905372c1ea41e04e7a3dbd2566e
Merge: d7b4ae9 0dfc198
Author: Me Me <my.my@gmail.com>
Date: Wed Dec 23 17:50:46 2015 +0100
Merge branch 'development' of ssh://fsstash.cool.com:7999/our/server into my-branch
commit 0dfc19850b2e31d72c1d2923321430e8fc1b53cb
Merge: 724b8a7 d3478f9
Author: Good Guy <Good.Guy@gmail.com>
Date: Wed Dec 23 14:34:33 2015 +0200
Merge branch 'development' of ssh://fsstash.cool.com:7999/our/server into development
当我做 git checkout 0dfc19850b2e31d72c1d2923321430e8fc1b53cb 一切编译正常。
所以问题是:我该如何解决它?
通过修复,我的意思是了解发生了什么并重新应用拉取更改(也许),这样我就不必将与此修复相关的任何内容提交到上游存储库中。
似乎不好的是 UTF-16 (0x00A9) 而好的是 UTF-8 - (0xC2 0xA9)。什么可能改变了它?
构建系统是 maven,但它与裸 javac 在复制和缩小文件上报告的相同错误无关。操作系统是 ubuntu 15.10,语言环境是这样说的:
locale
LANG=ru_RU.UTF-8
LANGUAGE=ru:en
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC=ru_UA.UTF-8
LC_TIME=ru_UA.UTF-8
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY=ru_UA.UTF-8
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER=ru_UA.UTF-8
LC_NAME=ru_UA.UTF-8
LC_ADDRESS=ru_UA.UTF-8
LC_TELEPHONE=ru_UA.UTF-8
LC_MEASUREMENT=ru_UA.UTF-8
LC_IDENTIFICATION=ru_UA.UTF-8
LC_ALL=
java-版本:1.8.0_66。
非常感谢任何帮助!
PS:尝试了所有 --diff-algorithm={patience|minimal|histogram|myers} - git-diff-tree 仍然没有发现任何变化
PS:git reset --hard HEAD~1, git pull origin developemnt
从命令行发出没有帮助,所以与Idea无关。