The data is already lost, perhaps you were lost in the encoding so much that you missed the point of fetching the data once again in the same method.
Unicode is applied to .NET framework, so all the dependant frameworks also include support for Unicode.
2. Win Forms
Many other frameworks from Microsoft also support Unicode, SQL Server is an example. The main concept is how the data is stored, you should not consider working around in that low level layer, you should only know that there is one framework, or character-set that supports Marathi, Arabic, Hindi etc and that is Unicode. What is UTF-8, UTF-16 LE, BE blah blah, forget about them. Just, store the data as you would and bring it back in the same way. The data is lost, when there is a mismatch between the encodings being used to map the characters to numbers, and to the byte-representation.
Font-family does play a role, but not as much important role as the encoding does. UTF-8 must only be used! That is applied to ASP.NET by default. For more, please read this article of mine: Reading and writing Unicode data in .NET