Ha! The tricky part is: there is no such thing as "UTF-8 char". It's only in UTF-32 there is a one-to-one correspondence between characters and code words. You first need to understand the idea of Unicode and UTFs.
Unicode standard is just a correspondence between integer values, called "code points" and considered as abstract mathematical integers without concerns to their computer presentation, size, endianess, etc., and characters of most cultures, understood as cultural entities, abstracted from the glyph fonts and other detail. Computer presentations of the characters is a separate aspect put on UTFs. UTFs work with data as an array of bytes. In UTF-8, which is byte-oriented, different characters have different size, in UTF-16 some characters take 16 bits (even ASCII), and some take 32-bits, a pair of 16-bit words called "surrogate pair
Please see to remove confusion:
Just in case, see my other answer on the topic: How do i convert from ascii to unicode in C#
You don't have to do anything special to pass Unicode text in you Web service, but you should work with Unicode text or characters, not with UTFs. As you work with SOAP, the soup file/stream supports UTF-8. It should be prescribed in its "HTTT-EQUIV".