diff --git a/geomagio/imfv283/IMFV283Parser.py b/geomagio/imfv283/IMFV283Parser.py
index 6f59bbb154541cd0472303c7572bc76c41b27596..69a95794331acbd5a5f4dc2da91f039cc4ec4206 100644
--- a/geomagio/imfv283/IMFV283Parser.py
+++ b/geomagio/imfv283/IMFV283Parser.py
@@ -1,5 +1,5 @@
 """Parsing methods for the IMFV283 Format."""
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
 from builtins import range
 
 import numpy
@@ -97,7 +97,7 @@ class IMFV283Parser(object):
                 self._post_process(data, msg_header, goes_header)
             except (KeyError, IndexError, ValueError):
                 sys.stderr.write("Incorrect data line ")
-                sys.stderr.write(line)
+                sys.stderr.write(str(line))
 
     def _estimate_data_time(self, transmission, doy, minute,
             max_transmit_delay=1800):
@@ -281,7 +281,8 @@ class IMFV283Parser(object):
         header = {}
 
         header['daps_platform'] = msg[0:8]
-        header['obs'] = imfv283_codes.PLATFORMS[header['daps_platform']]
+        platform = str(header['daps_platform'])
+        header['obs'] = imfv283_codes.PLATFORMS[platform]
         # if it's not in the observatory dictionary, we ignore it.
         if header['obs'] is None:
             return header
diff --git a/geomagio/imfv283/imfv283_codes.py b/geomagio/imfv283/imfv283_codes.py
index 8230fd6820c33d41c1ebc37bd7d5530946725d25..d566ce1e917d40f6a7857d3a429fe0acef17b12b 100644
--- a/geomagio/imfv283/imfv283_codes.py
+++ b/geomagio/imfv283/imfv283_codes.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
 """Dictionary of observatory codes and ness block byte orders"""
 OBSERVATORIES = {
     # USGS