It seems that the problem is more of general python problem than of web2py.
Before using string:list type field to store user-defined field, I didn't
experience having dict key values as non-ascii. Because of the new problem
definition, I did experience it and learned something new.
For just clearing the problem out of web2py: The problem of extra escape
character added can be reproduced as below.
>>> a_dict = { '\xec\x9d' : '\xed\x95' }
>>> str(a_dict)
"{ '\\xec\\x9d' : '\xed\\x95' }"

