Revert part of 7f404fdef23dbbe5204d35bcb9261ff50939f31f
unichr does not work for code point > 0x10000 on ucs2 build
diff --git a/lib/py/src/protocol/TJSONProtocol.py b/lib/py/src/protocol/TJSONProtocol.py
index 7d56545..3539412 100644
--- a/lib/py/src/protocol/TJSONProtocol.py
+++ b/lib/py/src/protocol/TJSONProtocol.py
@@ -251,14 +251,18 @@
def _toChar(self, high, low=None):
if not low:
- codepoint = high
+ if sys.version_info[0] == 2:
+ return ("\\u%04x" % high).decode('unicode-escape').encode('utf-8')
+ else:
+ return chr(high)
else:
codepoint = (1 << 16) + ((high & 0x3ff) << 10)
codepoint += low & 0x3ff
- if sys.version_info[0] == 2:
- return unichr(codepoint).encode('utf-8')
- else:
- return chr(codepoint)
+ if sys.version_info[0] == 2:
+ s = "\\U%08x" % codepoint
+ return s.decode('unicode-escape').encode('utf-8')
+ else:
+ return chr(codepoint)
def readJSONString(self, skipContext):
highSurrogate = None