diff --git a/hgext/win32mbcs.py b/hgext/win32mbcs.py
index 45ba8416afc47a751a4725aef030bd47f153d29d_aGdleHQvd2luMzJtYmNzLnB5..e6508d1e0b47fb5437a36e1f5fe00dc032991b9b_aGdleHQvd2luMzJtYmNzLnB5 100644
--- a/hgext/win32mbcs.py
+++ b/hgext/win32mbcs.py
@@ -73,7 +73,7 @@
     default=lambda: encoding.encoding,
 )
 
-_encoding = None  # see extsetup
+_encoding: str = ""  # see extsetup
 
 
 def decode(arg):
@@ -129,7 +129,7 @@
     except UnicodeError:
         raise error.Abort(
             _(b"[win32mbcs] filename conversion failed with %s encoding\n")
-            % _encoding
+            % encoding.strtolocal(_encoding)
         )
 
 
@@ -199,7 +199,7 @@
         return
     # determine encoding for filename
     global _encoding
-    _encoding = ui.config(b'win32mbcs', b'encoding')
+    _encoding = encoding.strfromlocal(ui.config(b'win32mbcs', b'encoding'))
     # fake is only for relevant environment.
     if _encoding.lower() in problematic_encodings.split():
         for f in funcs.split():
@@ -217,5 +217,6 @@
         # extensions.loadall() is called.
         if '--debug' in sys.argv:
             ui.writenoi18n(
-                b"[win32mbcs] activated with encoding: %s\n" % _encoding
+                b"[win32mbcs] activated with encoding: %s\n"
+                % encoding.strtolocal(_encoding)
             )