상세 컨텐츠

본문 제목

한자 등록시 ? 표시 해결하기

C#

by 탑~! 2014. 3. 28. 16:33

본문

디비 스키마가 nvarchar가 아닌 varchar로 되어있을 경우


부득히가하게 스키마 변경이 불가능하다면


아래의 코드로 ?로 입력되는 문자를 unicode로 치환하면


된다.


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#' 카테고리의 다른 글

다국어  (0) 2014.03.31
C# Color Name Table  (0) 2014.03.28
c# autoscroll  (0) 2014.03.28
파일과 연결된 아이콘 가져오기  (0) 2014.03.21
웹 이미지 다운로드  (0) 2014.03.05

관련글 더보기