Welcome to Apfelstrudel

As a Mac user, you use file and folder names which can include upper and lower case Roman letters, accented characters, and non-Roman characters from scripts such as Cyrillic, Arabic, and Japanese. You will already be aware that (unless using case-sensitive HFS+) you cannot have two files named this.text and This.text in the same folder, because the file system preserves case, but is not case-sensitive.

Unless you use accented or non-Roman characters, you may not be aware that they can cause further issues. For example, although they may look the same, café.jpg and café.jpg use different Unicode characters. Spelt out in hexadecimal, they are 63 61 66 c3 a9 2e 6a 70 67 and 63 61 66 65 cc 81 2e 6a 70 67. You can verify this by copying each into a good text editor, and checking their length: although they look the same in most fonts, they have different lengths.

To cope with this type of problem, macOS performs Unicode normalisation of strings used to name files and folders. When necessary, this changes characters so that all e-acutes are represented by the same Unicode character. This explains why you cannot have those two files in the same folder, because macOS changes one of them under normalisation, and they would then have exactly the same name.

Because the characters look the same, we are not aware of what normalisation actually does, much of the time. But when you try moving files between two different normalisation systems, or an app uses file names without normalising them, you can get problems. The Mac uses a different form of normalisation from Linux, and the Mac’s old file system, HFS+, handles normalisation differently from its new file system, APFS, but there is a compatibility layer which should ensure that HFS+ and APFS work in concert.

Apfelstrudel shows you how strings which look identical may be encoded quite differently, how they change when normalised using each of the four different Unicode schemes, and provides normalised forms which you can use more safely where necessary.

Apfelstrudel is thus useful for anyone who uses file and folder names within different file systems. It may also prove fascinating for anyone interested in text representation on computers.

Basic use

Normalising text

Non-Roman text

Oddities

Technical information

The Eclectic Light Company blog (external link)

The Eclectic Light Company – https://eclecticlight.co