slapproxy: Teach slapproxy to handle non-ascii instance parameters
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.
Showing
Please register or sign in to comment