diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index 6821a43c3..b097a6e5f 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -1610,9 +1610,17 @@ __set_charset_from_locale (const char *loc, char *charset) cs = "ISO-8859-13"; break; case 1258: - default: cs = "UTF-8"; break; + default: + /* Some (pretty new) EU locales don't exist in GLibc and haven't been + catched above. Check for @euro modifier again and make these locales + always use ISO-8859-15. */ + if (modifier && !strcmp (modifier + 1, "euro")) + cs = "ISO-8859-15"; + else + cs = "UTF-8"; + break; } stpcpy (charset, cs); }