Где Cygwin устанавливает локаль ($ LANG env var)?
При запуске приложения языковой стандарт приложения устанавливается на языковой стандарт по умолчанию "C" или "POSIX". В Cygwin 1.7.2 и более поздних версиях этот язык по умолчанию использует набор символов ASCII на уровне приложения.
...
Как установить локаль
Предположим, что вы установили одну из вышеупомянутых переменных среды в какое-то допустимое значение локали POSIX, отличное от "C" и "POSIX". Предположим далее, что вы живете в Японии. Возможно, вы захотите использовать код языка "ja" и территорию "JP", таким образом, установив, скажем, для LANG значение "ja_JP".
Вы не установили набор символов, так что теперь будет использовать Cygwin? Начиная с Cygwin 1.7.2, набор символов по умолчанию определяется кодовой страницей Windows ANSI по умолчанию для этого языка и территории. Cygwin использует набор символов, который является типичным Unix-эквивалентом кодовой страницы Windows ANSI.
Вы не хотите использовать набор символов по умолчанию? В этом случае вы должны указать кодировку явно. Например, предположим, что вы из Японии и не хотите использовать кодировку по умолчанию для японского языка EUC-JP, а кодировку по умолчанию для Windows SJIS.
Например, вы можете установить переменную LANG в mintty Cygwin Terminal в разделе "Текст" его диалогового окна "Параметры".
Если вы начинаете сеанс Cygwin через командный файл или ярлык командного файла, вы также можете просто установить LANG там:
@echo off
C:
chdir C:\cygwin\bin
set LANG=ja_JP.SJIS
bash --login -i
Источник Глава 2.Настройка Cygwin - Интернационализация