> -----Original Message----- > From: Joris Valette > Sent: Sunday, October 15, 2017 9:34 AM > To: git@xxxxxxxxxxxxxxx > Subject: Consider escaping special characters like 'less' does > > The pager 'less' escapes some characters when calling 'git diff'. This > is what I might get: > > $ git diff --cached > diff --git a/some_file b/some_file > new file mode 100644 > index 0000000..357323f > --- /dev/null > +++ b/some_file > @@ -0,0 +1 @@ > +<U+FEFF>Hello > \ No newline at end of file > > This example is a simple file encoded in UTF-8 *with BOM*. > On the other hand, the built-in git output shows this: > > $ git --no-pager diff --cached > diff --git a/some_file b/some_file > new file mode 100644 > index 0000000..357323f > --- /dev/null > +++ b/some_file > @@ -0,0 +1 @@ > +?Hello > \ No newline at end of file It is your terminal, not git's fault that you get a ? rendered. $ git diff diff --git a/test.txt b/test.txt index af9f93a..294e397 100644 --- a/test.txt +++ b/test.txt @@ -1 +1 @@ -the quick brown fox jumps over the lazy dog +<U+FEFF>the quick brown fox jumps over the lazy dog $ git diff | hexdump.exe -C 00000000 64 69 66 66 20 2d 2d 67 69 74 20 61 2f 74 65 73 |diff --git a/tes| 00000010 74 2e 74 78 74 20 62 2f 74 65 73 74 2e 74 78 74 |t.txt b/test.txt| 00000020 0a 69 6e 64 65 78 20 61 66 39 66 39 33 61 2e 2e |.index af9f93a..| 00000030 32 39 34 65 33 39 37 20 31 30 30 36 34 34 0a 2d |294e397 100644.-| 00000040 2d 2d 20 61 2f 74 65 73 74 2e 74 78 74 0a 2b 2b |-- a/test.txt.++| 00000050 2b 20 62 2f 74 65 73 74 2e 74 78 74 0a 40 40 20 |+ b/test.txt.@@ | 00000060 2d 31 20 2b 31 20 40 40 0a 2d 74 68 65 20 71 75 |-1 +1 @@.-the qu| 00000070 69 63 6b 20 62 72 6f 77 6e 20 66 6f 78 20 6a 75 |ick brown fox ju| 00000080 6d 70 73 20 6f 76 65 72 20 74 68 65 20 6c 61 7a |mps over the laz| Note: 0a is newline, 2b is + ef bb bf are the specials added to the file, 74 68 65 20 71 75 is 'the qu' 00000090 79 20 64 6f 67 0a 2b ef bb bf 74 68 65 20 71 75 |y dog.+...the qu| 000000a0 69 63 6b 20 62 72 6f 77 6e 20 66 6f 78 20 6a 75 |ick brown fox ju| 000000b0 6d 70 73 20 6f 76 65 72 20 74 68 65 20 6c 61 7a |mps over the laz| 000000c0 79 20 64 6f 67 0a |y dog.| 000000c6 $ git diff | cat diff --git a/test.txt b/test.txt index af9f93a..294e397 100644 --- a/test.txt +++ b/test.txt @@ -1 +1 @@ -the quick brown fox jumps over the lazy dog +the quick brown fox jumps over the lazy dog $ git --no-pager diff diff --git a/test.txt b/test.txt index af9f93a..294e397 100644 --- a/test.txt +++ b/test.txt @@ -1 +1 @@ -the quick brown fox jumps over the lazy dog +the quick brown fox jumps over the lazy dog And my UTF-8 capable terminal displays it fine. What do you get when you pipe to hexdump? -Jason