python3: force_text/force_byte
This commit is contained in:
parent
fe718e1159
commit
d009b35ab2
|
@ -5,6 +5,8 @@ import logging
|
|||
import cgi
|
||||
from datetime import date
|
||||
|
||||
import six
|
||||
|
||||
__all__ = ['PaymentCommon', 'URL', 'HTML', 'RANDOM', 'RECEIVED', 'ACCEPTED',
|
||||
'PAID', 'ERROR', 'WAITING']
|
||||
|
||||
|
@ -29,15 +31,27 @@ ORDERID_TRANSACTION_SEPARATOR = '!'
|
|||
|
||||
|
||||
def force_text(s, encoding='utf-8'):
|
||||
if isinstance(s, unicode):
|
||||
if issubclass(type(s), six.text_type):
|
||||
return s
|
||||
try:
|
||||
return unicode(s, encoding)
|
||||
if not issubclass(type(s), six.string_types):
|
||||
if six.PY3:
|
||||
if isinstance(s, bytes):
|
||||
s = six.text_type(s, encoding)
|
||||
else:
|
||||
s = six.text_type(s)
|
||||
elif hasattr(s, '__unicode__'):
|
||||
s = six.text_type(s)
|
||||
else:
|
||||
s = six.text_type(bytes(s), encoding)
|
||||
else:
|
||||
s = s.decode(encoding)
|
||||
except UnicodeDecodeError:
|
||||
return unicode(s)
|
||||
return six.text_type(s, encoding, 'ignore')
|
||||
return s
|
||||
|
||||
def force_byte(s, encoding='utf-8'):
|
||||
if isinstance(s, str):
|
||||
if isinstance(s, bytes):
|
||||
return s
|
||||
try:
|
||||
return s.encode(encoding)
|
||||
|
|
Loading…
Reference in New Issue