У меня небольшая проблема с изменением кодировки строки. На самом деле я читаю из строк БД, которые кодируются с использованием кодовой страницы 850, и мне нужно подготовить их, чтобы они подходили для совместимой службы WCF.
Из БД я читаю символы \ x10 и \ x11 (треугольные формы) и хочу преобразовать их в формат Unicode, чтобы предотвратить проблему сериализации / десериализации во время вызова WCF. (Символы
и не действительны в соответствии со спецификациями XML, даже если WCF их сериализует).
Теперь я использую следующий код для скрытого кодирования строки, но ничего не происходит. Строка результата фактически идентична исходной.
Я, наверное, что-то упустил ...
Пожалуйста, помогите мне !!!
Emanuele
static class UnicodeEncodingExtension
{
public static string Convert(this Encoding sourceEncoding, Encoding targetEncoding, string value)
{
string reEncodedString = null;
byte[] sourceBytes = sourceEncoding.GetBytes(value);
byte[] targetBytes = Encoding.Convert(sourceEncoding, targetEncoding, sourceBytes);
reEncodedString = sourceEncoding.GetString(targetBytes);
return reEncodedString;
}
}
class Program
{
private static Encoding Cp850Encoding = Encoding.GetEncoding(850);
private static Encoding UnicodeEncoding = Encoding.UTF8;
static void Main(string[] args)
{
string value;
string resultValue;
value = "\x10";
resultValue = Cp850Encoding.Convert(UnicodeEncoding, value);
value = "\x11";
resultValue = Cp850Encoding.Convert(UnicodeEncoding, value);
value = "\u25b6";
resultValue = UnicodeEncoding.Convert(Cp850Encoding, value);
value = "\u25c0";
resultValue = UnicodeEncoding.Convert(Cp850Encoding, value);
}
}