为什么 git 文件结尾修复程序不断在我的文件末尾添加未知字符?

Why is does the git end-of-file-fixer keeps adding a unknown character at the end of my file?

我在 Windows 上有一个 .json 文件,我试图将其提交到我的 git 存储库。我们激活了文件末尾修复程序预提交挂钩,以确保每个文件末尾始终有一个新行。但是,每次我提交我的文件时,它都会在我的文件末尾添加一些未知字符:

如果我稍后尝试用 Python 读取这个文件,它会抱怨 json 中有一个未知字符并且它无法解码文件。

Traceback (most recent call last):
  File "C:\Users\rruiter\Miniconda3\envs\nest39\lib\site-packages\IPython\core\interactiveshell.py", line 3251, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-7-cd035d98e6fe>", line 2, in <module>
    data = json.loads(f.read())
  File "C:\Users\rruiter\Miniconda3\envs\nest39\lib\json\__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "C:\Users\rruiter\Miniconda3\envs\nest39\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\rruiter\Miniconda3\envs\nest39\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

原来我的 .json 文件被编码为 UTF-16 LE BOM。当我将它转换为 UTF-8 时,一切都恢复正常了。