У меня есть небольшая проблема с изменением кодировки строки. На самом деле я читаю строки DB, которые кодируются с использованием кодовой страницы 850, и я должен их подготовить, чтобы быть подходящим для совместимой службы WCF.Проблема с преобразованием кодирования
Из БД я читаю символы \ x10 и \ x11 (треугольные фигуры), и я хочу преобразовать их в формат Unicode, чтобы предотвратить проблему сериализации/десериализации во время вызова WCF. (Chars и недопустимы в соответствии с спецификациями 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);
}
}
Проблема возникает во время декодирования на стороне клиента Java.Когда строка содержит \ x10 или \ x11 WCF, ошибочно разрешает кодирование их в и , которые являются недопустимыми символами XML в соответствии со спецификацией XML. Я видел здесь [http://en.wikipedia.org/wiki/Code_page_850], что char \ x10 в codePage 850 соответствует char \ u25ba, и поэтому я думал, что преобразование кодировки должно решить мою проблему. – 2009-05-19 14:26:17
в соответствии со спецификацией XML, процессоры необходимы для обработки UTF-8 и UTF-16. Итак, не можете ли вы кодировать как UTF-8 и отправить своих персонажей через провод на клиентскую сторону? – Cheeso
Нет. Когда я сериализую \ x10, результат равен , который является допустимым символом Unicode, но не является допустимым символом XML. В других странах спецификации XML обрабатывают символы UTF- *, за исключением определенного диапазона символов. См. Здесь [http://www.w3.org/TR/2008/REC-xml-20081126/#charsets] – 2009-05-20 17:25:41