diff --git a/src/shared/util.c b/src/shared/util.c index 5827f6c7a1..5d6995d23f 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -5402,7 +5402,23 @@ bool is_locale_utf8(void) { goto out; } - cached_answer = streq(set, "UTF-8"); + if(streq(set, "UTF-8")) { + cached_answer = true; + goto out; + } + + /* For LC_CTYPE=="C" return true, + * because CTYPE is effectly unset and + * everything defaults to UTF-8 nowadays. */ + + set = setlocale(LC_CTYPE, NULL); + if (!set) { + cached_answer = true; + goto out; + } + + cached_answer = streq(set, "C"); + out: return (bool)cached_answer; }