Правило очень простое:
Если твоя программа не использует Юникод, ты мудак.
Это правило не обсуждается, и никаких других интерпретаций быть не может.
Юникод-кодировок несколько, но лучше всего использовать UTF-8 по причине его обратной совместимости с базовой 7-битной таблицей ASCII, а также общей гениальности архитектуры (круче никто не сделал).
В идеале, конечно, Юникод должен использоваться и в базе данных, и в файлах, и в исходном коде программы, но здесь, само собой, всё зависит от выбранных языков и технологий. С другой стороны, почему в 21 веке всё ещё существуют языки программирования, которые не переваривают исходные тексты программ в многобайтовой кодировке, технологии, поддерживающие только однобайтовые кодировки, и использующие их люди, для нормального инженера должно быть загадкой.
Историю вопроса можно описать одним абзацем. Поскольку основные компьютерные технологии придуманы западным миром, они изначально были рассчитаны только на английский язык и латинский алфавит. Но потом внезапно оказалось, что компьютеры нужны всем, а программисты — люди ленивые, поэтому переучиваются неохотно и медленно. Посему мы до сих пор встречаем эти осколки прошлого, однако брать с них пример — нездоровая идея.
См. также: Правило про автоматизацию.