The ord() built-in may return very large values when handed a 1-character unicode string:
>>> ord(u'\U00008000')
32768
This means that chr(ord(s)) will not always work.
>>> chr(ord(u'\U00008000'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: chr() arg not in range(256)
>>> ord(u'\U00008000')
32768
This means that chr(ord(s)) will not always work.
>>> chr(ord(u'\U00008000'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: chr() arg not in range(256)