diff --git a/hive/utils/normalize.py b/hive/utils/normalize.py
index 0894cd1dffc600955085e35d1dc2dcabc4642e37..0fe4f5d13c1dffd6bf388474fa1466a234a59b5a 100644
--- a/hive/utils/normalize.py
+++ b/hive/utils/normalize.py
@@ -78,19 +78,23 @@ def escape_characters(text):
         if ch in SPECIAL_CHARS:
             dw = SPECIAL_CHARS[ch]
             ret = ret + dw
-        elif ch.isprintable():
-            ret = ret + ch
         else:
-            # escaped_value = ch.encode('unicode-escape').decode('utf-8')
             ordinal = ord(ch)
-            hexstr = hex(ordinal)[2:]
-            escaped_value = '\\u'
-            i = len(hexstr)
-            while i < 4:
-                escaped_value += '0'
-                i += 1
-            escaped_value += hexstr
-            ret = ret + escaped_value
+            if ordinal <= 0x80 and ch.isprintable():
+                ret = ret + ch
+            else:
+                hexstr = hex(ordinal)[2:]
+                i = len(hexstr)
+                max = 4
+                escaped_value = '\\u'
+                if i > max:
+                    max = 8
+                    escaped_value = '\\U'
+                while i < max:
+                    escaped_value += '0'
+                    i += 1
+                escaped_value += hexstr
+                ret = ret + escaped_value
 
     ret = ret + "'"
     return ret
diff --git a/tests/tests_api b/tests/tests_api
index 4ee51004b4d83d2c12ca8f6e10faab762cc0262f..fa660ef0ee019ba9c2da91e7a9140423593d944e 160000
--- a/tests/tests_api
+++ b/tests/tests_api
@@ -1 +1 @@
-Subproject commit 4ee51004b4d83d2c12ca8f6e10faab762cc0262f
+Subproject commit fa660ef0ee019ba9c2da91e7a9140423593d944e