To convert from a .net string to base 64, using UTF8 as the underlying encoding:
string base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(text));
And to reverse the process:
string text = Encoding.UTF8.GetString(Convert.FromBase64String(base64));
It is perfectly possible to skip the UTF8 step. However, UTF8 typically results in a smaller payload that UTF16 and so I would recommend using UTF8 as the underlying encoding.
I'm not sure what you mean when you say that the user can enter UTF8 characters. The .net framework uses UTF16 as its working string encoding. The strings you use in .net are always encoded with UTF16. Perhaps you are just meaning that the text can contain non-ASCII characters.