(ia)한자 등록시 ? 표시 해결하기

iamgun(46)
Published in
#it
Words
263
Reading
2 min
9y
Listen to this post
~2 min

디비 스키마가 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;

    }


2018년 1월 23일 화요일
(ia)한자 등록시 ? 표시 해결하기 | Ecency