diff --git a/src/mio/rpmDB.py b/src/mio/rpmDB.py
index 38a0495a6c2be7701757afa9d61818d6a82e1d5f..d17b5b61f089425b6ef3998777d924f8ea97fb17 100755
--- a/src/mio/rpmDB.py
+++ b/src/mio/rpmDB.py
@@ -35,13 +35,22 @@ class VersionDB:
     def __init__(self):
         self.rpm = {}
         try:
+            def toUtf8(s):
+                # Hack, need to investigate python2/python3 on all
+                # supported versions, ...
+                if not s:
+                    return ''
+                try:
+                    return s.decode('utf-8')
+                except AttributeError:
+                    return s
             read_ts = initReadOnlyTransaction()
             for e in read_ts.dbMatch():
                 (name, arch, version, release) = (
-                    e[rpm.RPMTAG_NAME].decode('utf-8'),
-                    (e[rpm.RPMTAG_ARCH] or b'').decode('utf-8'),
-                    e[rpm.RPMTAG_VERSION].decode('utf-8'),
-                    e[rpm.RPMTAG_RELEASE].decode('utf-8'))
+                    toUtf8(e[rpm.RPMTAG_NAME]),
+                    toUtf8(e[rpm.RPMTAG_ARCH]),
+                    toUtf8(e[rpm.RPMTAG_VERSION]),
+                    toUtf8(e[rpm.RPMTAG_RELEASE]))
                 theRPM = RPM(name, arch, version, release)
                 def add_rpm(name, rpm):
                     if not name in self.rpm:
@@ -59,7 +68,7 @@ class VersionDB:
                     pass
                 add_rpm(name, theRPM)
                 for p in e['provides']:
-                    add_alias(name, p.decode('utf8'), theRPM)
+                    add_alias(name, toUtf8(p), theRPM)
                     pass
                 # for o in e['obsoletes']:
                 #     add_alias(name, o.decode('utf8'), theRPM)