On Mon, Feb 26, 2018 at 06:35:33PM +0100, Torsten Bögershausen wrote: > > diff --git a/userdiff.c b/userdiff.c > > index dbfb4e13cd..48fa7e8bdd 100644 > > --- a/userdiff.c > > +++ b/userdiff.c > > @@ -161,6 +161,7 @@ IPATTERN("css", > > "-?[_a-zA-Z][-_a-zA-Z0-9]*" /* identifiers */ > > "|-?[0-9]+|\\#[0-9a-fA-F]+" /* numbers */ > > ), > > +{ "utf16", NULL, -1, { NULL, 0 }, NULL, "iconv:utf16" }, > > { "default", NULL, -1, { NULL, 0 } }, > > }; > > #undef PATTERNS > > The patch looks like a possible step into the right direction - > some minor notes: "utf8" is better written as "UTF-8", when talking > to iconv.h, same for utf16. > > But, how do I activate the diff ? > I have in .gitattributes > XXXenglish.txt diff=UTF-16 > > and in .git/config > [diff "UTF-16"] > command = iconv:UTF-16 > > > What am I doing wrong ? After applying the patch, if I do: git init echo hello | iconv -f utf8 -t utf16 >file git add file git commit -m one echo goodbye | iconv -f utf8 -t utf16 >file git add file git commit -m two then: git log -p shows "binary files differ" but: echo "file diff=utf16" >.gitattributes git log -p shows text diffs. I assume you tweaked the patch before switching to the UTF-16 spelling in your example. Did you use a plumbing command to show the diff? textconv isn't enabled for plumbing, because the resulting patches cannot actually be applied (in that sense an encoding switch is potentially special, since in theory one could convert to the canonical text format, apply the patch, and then convert back). -Peff