- if charset and charset.lower() != g.default_encoding:
- s = s.decode(charset, "replace").encode(g.default_encoding, "replace")
+ if bytes is str: # Python2
+ if isinstance(s, bytes) and \
+ charset and charset.lower() != g.default_encoding:
+ s = s.decode(charset, "replace").\
+ encode(g.default_encoding, "replace")
+ else: # Python3
+ if isinstance(s, bytes):
+ s = s.decode(charset, "replace")