summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/shared/util.c18
1 files changed, 17 insertions, 1 deletions
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;
}