为什么 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 时,一切都恢复正常了。
我在 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 时,一切都恢复正常了。