uff, this is tough, i!m triing it for an 2 hours and i know where is the problem but do not have nerves and time to finish it:
1. problem is using htmlentities without utf-8 encoding (for php < 5.4 it uses ISO)
2. you must utf_8 encode string before using json_encode
so line 383 should be
$sanitized_args[$key] = utf8_encode(htmlentities( $sanitized_args[$key], ENT_QUOTES, 'UTF-8' ));
similar on line 409 you should have probably
$string_or_unencoded_array[$key] = html_entity_decode( utf8_decode($value), ENT_QUOTES, 'UTF-8' );
but that json_encode is anyway cripling it, it need to be probably repaired also somewhere else. Imho you should use serialize / unserialize, not json_encode
also i am lookin in the get_encoded_description function and for me it seems as a very "strange" code.
1. imo you should use something like http://codex.wordpress.org/Function_Reference/sanitize_text_field
2. the whole function get_encoded_description function is completely useless, because you putting sanitized strings to $sanitized_args variable, but at the end you are returning original non-sanitized $args