Our great sponsors
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
This is a difference between what's called "transitional" and "nontransitional" IDNA processing.
The WHATWG URL standard mandates nontransitional processing, which says meßagefactory.ca becomes xn--meagefactory-m9a.ca. Firefox and Safari follow the standard.
Chrome and Edge are still using trransitional processing. Here's the Chrome bug to switch to nontransitional processing: https://bugs.chromium.org/p/chromium/issues/detail?id=694157
In 2021, Go's HTTP client switched from transitional to nontransitional processing and the relevant issue is quite informative: https://github.com/golang/go/issues/46001
In programming languages it's much worse. Identifiers can either be unidentifiable, and if so everybody has a different opinion what "identifiable" means. Even the standard on identifiers, UTF-39, is buggy and has too many interpretations, leading to a complete disaster. https://github.com/rurban/libu8ident/blob/master/doc/c11.md
In punycode domain names it's quite simple still.
With other names, it's even worse. No-one cares. Linkers do not, username and filesystem drivers do not. The Apple HFS+ did care a bit one day, until someone in the higher ranks decided that no-one needs unicode security anymore and switched the new APFS to unsafe again.