-
Kirill Smelkov authored
1. when forming instance parameters xml dict on client side, we cannot use str() to convert parameter_value to string - because it breaks e.g. this way: In [1]: s = u'Привет Мир!' In [2]: str(s) --------------------------------------------------------------------------- UnicodeEncodeError Traceback (most recent call UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128) Fix is: convert arguments to unicode strings. 2. when decoding xml on server side it was erroneously assumed to be always unicode, and this way xml.encode('utf-8') fails if xml is str but with non-ascii characters: In [3]: r = 'hello world' In [4]: r.encode('utf-8') Out[4]: 'hello world' In [5]: t = s.encode('utf-8') In [6]: t Out[6]: '\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82 \xd0\x9c\xd0\xb8\xd1\x80!' In [7]: t.encode('utf-8') --------------------------------------------------------------------------- UnicodeDecodeError Traceback (most recent call last) UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128) Fix is: don't assume xml string is unicode and decode it only, if it is unicode, and leave as it is if it is just str.
347d33d6