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