Attempt to encode non-encoded messages (#296)

diff --git a/provider/consumer.py b/provider/consumer.py
index a061c86..12cfd75 100644
--- a/provider/consumer.py
+++ b/provider/consumer.py
@@ -469,6 +469,17 @@
         return offsets
 
     def __encodeMessageIfNeeded(self, value):
+        # let's make sure whatever data we're getting is utf-8 encoded
+        try:
+            value.decode('utf-8')
+        except UnicodeDecodeError:
+            try:
+                logging.warn('[{}] Value is not UTF-8 encoded. Attempting encoding...'.format(self.trigger))
+                value = value.encode('utf-8')
+            except UnicodeDecodeError:
+                logging.warn('[{}] Value contains non-unicode bytes. Replacing invalid bytes.'.format(self.trigger))
+                value = unicode(value, errors='replace').encode('utf-8')
+
         if self.encodeValueAsJSON:
             try:
                 parsed = json.loads(value)