Pass MUTF-8 paths to open(2) instead of UTF-8.
Modified UTF-8 and UTF-8 differ with respect to how they handle
non-BMP characters. Modified UTF-8 uses 2 x 3 byte encodings, one
each for the high and low surrogate, whereas UTF-8 uses a single
4 byte sequence.
File systems don't specify and encoding and therefore the file name
encoding will vary depending on how it's created. All standard
Java APIs (java.io.File / FileOutputStream etc.) use Modified UTF-8
filenames, so we assume that's the status quo.
We will also audit code from the rest of the platform to make sure
that file names are encoded consistently.
1 file changed