if sys.version_info[0] >= 3:
_str, _bytes = str, bytes
+ IS_PYTHON3 = True
else:
_str, _bytes = unicode, str
+ IS_PYTHON3 = False
empty_bytes = _bytes()
empty_str = _str()
encoding = None
def byteencode(self):
- return _bytes(self)
+ if IS_PYTHON3:
+ return _bytes(self)
+ else:
+ # fake-recode the string to make it a plain bytes object
+ return self.decode('ISO-8859-1').encode('ISO-8859-1')
def utf8encode(self):
assert False, "this is not a unicode string: %r" % self
_has_specials = _build_specials_test()
def escape_char(c):
- c = c.decode('ISO-8859-1')
+ if IS_PYTHON3:
+ c = c.decode('ISO-8859-1')
if c in '\n\r\t\\':
return repr(c)[1:-1]
elif c == "'":
return s.decode("ASCII") # trial decoding: plain ASCII => done
except UnicodeDecodeError:
pass
- if sys.version_info[0] >= 3:
+ if IS_PYTHON3:
s_new = bytearray()
append, extend = s_new.append, s_new.extend
for b in s: