Subject: Re: [PATCH] ignores: handle non UTF-8 exclude files

From: "brian m. carlson" <[email-masked]>
Date: Tue, 6 Jan 2026 23:22:51 +0000

On 2026-01-06 at 20:45:56, Matthieu Beauchamp wrote:
> On Sun, Jan 4, 2026 at 2:40 PM brian m. carlson
> <[email-masked]> wrote:
> > Ah, yes, here's the problem.  UTF-16LE is used on Windows, and on
> > Windows, Git stores pathnames as if they were converted into UTF-8, so
> > you do need to write the filenames in UTF-8 in the ignore file.
> >
> 
> Yes, the conversion from UTF16-LE to UTF-8 would need to be platform
> specific.

We typically don't want platform-specific behaviour in Git.  Many Git
contributors do not work on Windows but we want things to work as much
as possible identically across all platforms because it makes
development easier, as well as making it easier for users to reason
about the project.  I, for one, don't have a Windows system (nor do I
want one) but I do want my Git code to just work there.

As an example, we still use a POSIX shell in aliases and other settings
on Windows despite the fact that PowerShell is built into Windows
because it means that aliases and similar functionality just work
correctly regardless of platform and it allows users to write a config
file that works everywhere.

Instead of trying to force Git to gracefully handle UTF-16 in its config
files, my strong recommendation is to adjust your PowerShell scripts to
use UTF-8 instead[0] or use a POSIX shell.  I'll note that Microsoft's
new Edit text editor[1] defaults to UTF-8 (and, except on Windows, LF
line endings), so I know that Microsoft understands that UTF-8 is the
proper encoding to use on the Internet today.

[0] https://stackoverflow.com/questions/5596982/using-powershell-to-write-a-file-in-utf-8-without-the-bom
[1] Available at https://github.com/microsoft/edit and apparently
shipped with Windows.  I will say that I was impressed at its
functionality for a 231 KiB binary footprint.
-- 
brian m. carlson (they/them)
Toronto, Ontario, CA