diff --git a/NEWS b/NEWS
index 371469b88..63219a1a7 100644
--- a/NEWS
+++ b/NEWS
@@ -25,6 +25,7 @@ ver 0.20 (not yet released)
   - soxr: allow multi-threaded resampling
 * reset song priority on playback
 * write database and state file atomically
+* always write UTF-8 to the log file.
 * remove dependency on GLib
 * support libsystemd (instead of the older libsystemd-daemon)
 * database
diff --git a/src/LogBackend.cxx b/src/LogBackend.cxx
index 64d523443..b1b692cd3 100644
--- a/src/LogBackend.cxx
+++ b/src/LogBackend.cxx
@@ -23,10 +23,6 @@
 #include "util/Domain.hxx"
 #include "util/StringUtil.hxx"
 
-#ifdef HAVE_GLIB
-#include <glib.h>
-#endif
-
 #include <assert.h>
 #include <stdio.h>
 #include <string.h>
@@ -65,10 +61,6 @@ ToAndroidLogLevel(LogLevel log_level)
 
 static LogLevel log_threshold = LogLevel::INFO;
 
-#ifdef HAVE_GLIB
-static const char *log_charset;
-#endif
-
 static bool enable_timestamp;
 
 #ifdef HAVE_SYSLOG
@@ -81,16 +73,6 @@ SetLogThreshold(LogLevel _threshold)
 	log_threshold = _threshold;
 }
 
-#ifdef HAVE_GLIB
-
-void
-SetLogCharset(const char *_charset)
-{
-	log_charset = _charset;
-}
-
-#endif
-
 void
 EnableLogTimestamp()
 {
@@ -175,20 +157,6 @@ LogFinishSysLog()
 static void
 FileLog(const Domain &domain, const char *message)
 {
-#ifdef HAVE_GLIB
-	char *converted;
-
-	if (log_charset != nullptr) {
-		converted = g_convert_with_fallback(message, -1,
-						    log_charset, "utf-8",
-						    nullptr, nullptr,
-						    nullptr, nullptr);
-		if (converted != nullptr)
-			message = converted;
-	} else
-		converted = nullptr;
-#endif
-
 	fprintf(stderr, "%s%s: %.*s\n",
 		enable_timestamp ? log_date() : "",
 		domain.GetName(),
@@ -199,10 +167,6 @@ FileLog(const Domain &domain, const char *message)
 	   to have an effect on WIN32 */
 	fflush(stderr);
 #endif
-
-#ifdef HAVE_GLIB
-	g_free(converted);
-#endif
 }
 
 #endif /* !ANDROID */
diff --git a/src/LogBackend.hxx b/src/LogBackend.hxx
index c6fe797f1..d38d9eeb3 100644
--- a/src/LogBackend.hxx
+++ b/src/LogBackend.hxx
@@ -26,13 +26,6 @@
 void
 SetLogThreshold(LogLevel _threshold);
 
-#ifdef HAVE_GLIB
-
-void
-SetLogCharset(const char *_charset);
-
-#endif
-
 void
 EnableLogTimestamp();
 
diff --git a/src/LogInit.cxx b/src/LogInit.cxx
index f0f00495f..7f3c11b2e 100644
--- a/src/LogInit.cxx
+++ b/src/LogInit.cxx
@@ -31,10 +31,6 @@
 #include "util/Domain.hxx"
 #include "system/FatalError.hxx"
 
-#ifdef HAVE_GLIB
-#include <glib.h>
-#endif
-
 #include <assert.h>
 #include <string.h>
 #include <fcntl.h>
@@ -131,12 +127,6 @@ log_init(bool verbose, bool use_stdout, Error &error)
 #else
 	const struct config_param *param;
 
-#ifdef HAVE_GLIB
-	const char *charset;
-	g_get_charset(&charset);
-	SetLogCharset(charset);
-#endif
-
 	if (verbose)
 		SetLogThreshold(LogLevel::DEBUG);
 	else if ((param = config_get_param(ConfigOption::LOG_LEVEL)) != nullptr)
@@ -216,10 +206,6 @@ void setup_log_output(bool use_stdout)
 	redirect_logs(out_fd);
 	close(out_fd);
 	out_fd = -1;
-
-#ifdef HAVE_GLIB
-	SetLogCharset(nullptr);
-#endif
 #endif
 }