diff --git a/smartmontools/ChangeLog b/smartmontools/ChangeLog
index ebf04b43cd89193dc3d6ed7dc454d9ef100383b5..7df90fe66ae44c1a22924a3ec0d8e685c6082e53 100644
--- a/smartmontools/ChangeLog
+++ b/smartmontools/ChangeLog
@@ -2,6 +2,9 @@ $Id$
 
 2022-02-22  Christian Franke  <franke@computer.org>
 
+	os_win32/update-smart-drivedb.ps1.in: Set console encoding.
+	Otherwise redirection to gpg occasionally starts with a BOM.
+
 	os_win32/update-smart-drivedb.ps1.in: Unify path syntax.
 
 	do_release: Update code signing key id.
diff --git a/smartmontools/os_win32/update-smart-drivedb.ps1.in b/smartmontools/os_win32/update-smart-drivedb.ps1.in
index 0d6a8c5f5209b748ca3fecd47b77123f5a303c80..15634aadc9cb834cef3610d32c284d38e7f63505 100644
--- a/smartmontools/os_win32/update-smart-drivedb.ps1.in
+++ b/smartmontools/os_win32/update-smart-drivedb.ps1.in
@@ -490,11 +490,15 @@ Q/qvYlwkbKOdlahjoHrFlkhADSBaO9N1OZp3OYDjziIujMdt2IPKnmM=
 function run_join_out_err($cmd) # $arg1, $arg2, ...
 {
   $cmdobj = Get-Command -CommandType Application -Name $cmd
+  # Don't prepend $input with BOM
+  $enc = [Console]::InputEncoding
+  [Console]::InputEncoding = [System.Text.UTF8Encoding]::new()
   $ErrorActionPreference = "Continue" # Don't abort command on first stderr output
   $LASTEXITCODE = 42
   # Run command and convert ErrorRecords from stderr to plain Strings
   $($input | & $cmdobj @args 2>&1) | %{ $_.ToString() }
   $ErrorActionPreference = "Stop"
+  [Console]::InputEncoding = $enc
 }
 
 function gpg_verify($ascfile, $file, [ref]$ok)