From : https://blog.naver.com/myjet1490/221376953630

From : https://blog.naver.com/sigmakni/221411206888
c# 에서 한글인코딩은 utf-8로 인코딩하면 문제가 없지만

중국어, 일본어 같이 한자를 약어를섞어쓰는 문자열은 대부분 앞에 ?문자가 붙으면서 인코딩이 깨지는 현상이 발생한다. 이부분은 아래의 소스 코드로 해결이 가능하다

몇일동안 구글링을 하다가 발견한 소스이다.

public string GetUnicodeString(string input)
{

        Encoding encoding = Encoding.GetEncoding(51949);//중국어 간체 
        var bytest = encoding.GetBytes(input); 
        var output = encoding.GetString(bytest); 
        //Console.WriteLine(input); 
        //Console.WriteLine(output); 

        List<string> unicodes = new List<string>(); 

        string result = String.Empty; 

        if (input != output) 
        { 

            for (int i = 0; i < input.Length; i += char.IsSurrogatePair(input, i) ? 2 : 1) 
            { 
                int codepoint = char.ConvertToUtf32(input, i); 
                unicodes.Add(String.Format("&#{0}", codepoint)); 
            } 

            for (int i = 0; i < input.Length; i++) 
            { 

                if (input[i].ToString() != output[i].ToString()) 
                { 
                    result += unicodes[i]; 
                } 

                else 
                { 
                    result += input[i]; 
                } 
            } 
        } 

        else result = input; 

        return result; 
    }

[출처] c# 한자,중국어, 일본어 인코딩 깨짐 현상 해결|작성자 마일