On Mon, Jul 24, 2017 at 09:02:12PM +0200, tonka3100@xxxxxxxxx wrote: > There is no .gitattributes file in the repo. I think that the git > heuristic will also detect utf-16 files as binary (in windows), so i > think that is the reason why my file is binary (i have to check that > tomorrow). Correct. UTF-16 _is_ binary, if you are trying to include it alongside ASCII content (like the rest of the text diff headers). The two cannot mix. > If i add a .gitattribute file i have the problem that git > diff will treat the old and the new blob as utf-8, which generate > garbage. Git's diff doesn't look at encodings at all; it does a diff of the actual bytes without respect to any encoding. So yes, if you use "-a" or a gitattribute to ask git to show you the bytes, the UTF-16 is likely to look like garbage (and a commit rewriting from utf-16 to utf-8 will basically be a rewrite of the whole file contents). > Do you have another idea? Could it be possible to add only a space in > code (utf-8) and then add the real content in a second commit, so the > old and the new one are both utf-8? I'm not sure exactly what you're trying to accomplish. If you're unhappy with the file as utf-16, then you should probably convert to utf-8 as a single commit (since the diff will otherwise be unreadable) and then make further changes in utf-8. If you need the file to remain utf-16 but you want more readable diffs for those versions, you can ask git to convert to utf-8 before performing the diff. Such a diff couldn't be applied, but would be useful for reading. E.g., try: echo 'file diff=utf16' >.gitattributes git config diff.utf16.textconv 'iconv -f utf16 -t utf8' You can read more about how this works in the "textconv" section of "git help attributes". Note that I'm relying on the external "iconv" tool to do the conversion there. It's pretty standard on most Unix systems, but I don't know what would be the best tool on Windows. -Peff