diff --git a/include/class.i18n.php b/include/class.i18n.php
index 3954ea0d0765a6777afc396c30e87f9fac251c05..a7e23a8ee63d3fabbcbb2e4568a25b60ab3eb3ef 100644
--- a/include/class.i18n.php
+++ b/include/class.i18n.php
@@ -490,6 +490,10 @@ class Internationalization {
         TextDomain::setDefaultDomain($domain);
         TextDomain::lookup()->setPath(I18N_DIR);
 
+        // Set the default locale to UTF-8. It will be changed by
+        // ::setLocaleForUser() later for web requests. See #2910
+        TextDomain::setLocale(LC_ALL, 'en_US.UTF-8');
+
         // User-specific translations
         function _N($msgid, $plural, $n) {
             return TextDomain::lookup()->getTranslation()