diff --git a/km3io/offline.py b/km3io/offline.py
index 44d834e36542d92d21207a6e0a201b864b1da1aa..8902bc929e3c21ad35838d23b8651933e8f2ec7e 100644
--- a/km3io/offline.py
+++ b/km3io/offline.py
@@ -333,9 +333,10 @@ class OfflineReader:
         if self._header is None:
             fobj = uproot.open(self._file_path)
             if b'Head;1' in fobj.keys():
+                self._header = {}
                 for n, x in fobj['Head']._map_3c_string_2c_string_3e_.items():
-                    print("{:15s} {}".format(n.decode("utf-8"), x))
-                    self._header = fobj['Head']._map_3c_string_2c_string_3e_
+                    print("{:15s} {}".format(n.decode("utf-8"), x.decode("utf-8")))
+                    self._header[n.decode("utf-8")] = x.decode("utf-8")
             if b'Header;1' in fobj.keys():
                 warnings.warn("Your file header has an unsupported format")
         return self._header
diff --git a/tests/test_offline.py b/tests/test_offline.py
index cdd476e80706bc0e0f8057ed6709beaed020e13b..185008bcbf983b788c10a283cad2d2c60c1123de 100644
--- a/tests/test_offline.py
+++ b/tests/test_offline.py
@@ -132,6 +132,17 @@ class TestOfflineReader(unittest.TestCase):
         # check that there are 10 events
         self.assertEqual(Nevents, self.Nevents)
 
+    def test_reading_header(self):
+        # head is the supported format
+        head = OfflineReader(OFFLINE_NUMUCC).header
+
+        self.assertEqual(float(head['DAQ']), 394)
+        self.assertEqual(float(head['kcut']), 2)
+
+        # test the warning for unsupported fheader format
+        self.assertWarns(UserWarning, self.r.header,
+                         "Your file header has an unsupported format")
+
 
 class TestOfflineEvents(unittest.TestCase):
     def setUp(self):