Так склалось, що для кодування кирилиці, зокрема, української мови використовувалось різне кодування символів, а проблема української букви і залишалась,- замість букви - прочерк. Хотя проблему вирішили - UTF-8, але не все так просто.
Кодування 866 (російський MS-DOS) и 1251 (російський Windows) не є державними стандартами. Ось так, стандарти створюють одні спеціалісти, а програми пишуть інші.