diff --git a/mercurial/error.py b/mercurial/error.py
index a314eafd7c8ddbe00564206e8f4092a4705db66a_bWVyY3VyaWFsL2Vycm9yLnB5..f732889abe0ecde2931ed51bf3452b84580c1831_bWVyY3VyaWFsL2Vycm9yLnB5 100644
--- a/mercurial/error.py
+++ b/mercurial/error.py
@@ -44,6 +44,14 @@
 class RevlogError(StorageError):
     __bytes__ = _tobytes
 
+    def __str__(self):
+        # avoid cycle, and directly implement unimethod for this
+        # __str__ to allow delaying the import of encoding until
+        # someone actually wants the __str__ of a RevlogError (which
+        # should be very rare).
+        from . import encoding
+        return encoding.unifromlocal(_tobytes(self))
+
 class FilteredIndexError(IndexError):
     __bytes__ = _tobytes