Помню в далекие времена бомбило от CP1251, вот зачем эти однобайтные кодировки, есть же нормальный UTF-8, который совместим с ASCII, используй его везде и не парься, ну! Сегодня в интернете трудно найти сайт не в UTF-8 кодировке, Firefox даже запрятал смену кодировки куда-то далеко в глубины меню. Да и получить проблемы с кодировкой на сайте — моветон, предание старины глубокой…

И вообще это все от лукавого винды, вон на линуксе и на маке почти везде UTF-8… Но он там, оказывается, разный. В UTF-8 есть несколько нормальных форм. Если коротко, то символ â можно представить как один сложный символ (это NFC), а можно как комбинацию обычной a и крышки (это NFD).

Сам стандарт рекомендует использовать везде NFC. Linux и почти весь web используют его. У Apple другой путь — они используют NFD.

Теоретически в этом нет никакой проблемы, если везде при обработке данных используется UTF-8, т.к. эти две формы считаются эквивалентными. Однако, если где-то случайно передавать данные в сыром виде или с ANSI кодировкой, то можно получить веселый прикол, когда две совершенно идентичные с точки зрения всех нормальных инструментов строки на самом деле не одинаковые с точки зрения представления в байтах.