> -----Original Message----- > From: brian m. carlson [mailto:sandals@xxxxxxxxxxxxxxxxxxxx] > Sent: Wednesday, December 26, 2018 11:25 AM > To: Alexandre Grigoriev > Cc: 'Torsten Bögershausen'; 'Adrián Gimeno Balaguer'; git@xxxxxxxxxxxxxxx > Subject: Re: git-rebase is ignoring working-tree-encoding > > On Tue, Dec 25, 2018 at 04:56:11PM -0800, Alexandre Grigoriev wrote: > > Many tools in Windows still do not understand UTF-8, although it's > > getting better. I think Windows is about the only OS where tools still > > require > > UTF-16 for full internationalization. > > Many tools written in C use MSVC RTL, where fopen(), unfortunately, > > doesn't understand UTF-16BE (though such a rudimentary program as > Notepad does). > > > > For this reason, it's very reasonable to ask that the programming > > tools produce UTF-16 files with particular endianness, natural for the > > platform they're running on. > > > > The iconv programmers' boneheaded decision to always produce UTF-16BE > > with BOM for UTF-16 output doesn't make sense. > > Again, git and iconv/libiconv in Centos on x86 do the right thing and > > produce UTF-16LE with BOM in this case. > > A program which claims to support "UTF-16" must support both > endiannesses, according to RFC 2781. A program writing UTF-16-LE must not > write a BOM at the beginning. I realize this is inconvenient, but the bad > behavior of some Windows programs doesn't mean that Git should ignore > interoperability with non-Windows systems using UTF-16 correctly in favor of > Windows. OK, we have a choice either: a) to live in that corner of the real world where you have to use available tools, some of which have historical reasons to only support UTF-16LE with BOM, because nobody ever throws a different flavor of UTF-16 at them; Or b) to live in an ivory tower where you don't really need to use UTF-16 LE or BE or any other flavor, because everything is just UTF-8, and tell all those other people using that lame OS to shut up and wait until their tools start to support the formats you don't really have to care about; > behavior of some Windows programs doesn't mean that Git should ignore > interoperability with non-Windows systems using UTF-16 correctly in favor of > Windows. Yes, Git (actually libiconv) should not ignore interoperability. This means it should check out files on a *Windows* system in a format which *Windows* tools can understand. And, by the way, Centos (or RedHat?) developers understood that. There, on an x86 installation, when you ask for UTF-16, it produces UTF-16LE with BOM. Just as every user there would want.