setCharacterStream and setClob (when a characterStream is used) uses the wrong length of the byte buffer sent to the server. It uses the character length and not the byte length. This will lead to lost characters in the database if multibyte characters are used.
I have attached a patch with a fix for the problem. The patch also includes some new test cases to show the problem.