Ich habe ein kleines Problem beim Ändern der Ecoding einer Zeichenfolge. Tatsächlich lese ich aus einer DB Zeichenfolgen, die mit der Codepage 850 codiert sind, und ich muss sie vorbereiten, um für einen interoperablen WCF-Dienst geeignet zu sein.Codierung Konvertierungsproblem
Von der DB I Zeichen \ x10 und \ x11 (Dreiecksformen), und ich will wandeln sie in das Unicode-Format lesen, um die Serialisierung/Deserialisierung Problem während der WCF Aufrufs zu verhindern. (Zeichen und sind nicht gemäß den XML-Spezifikationen gültig, selbst wenn WCF sie serialisiert).
Jetzt verwende ich folgenden Code, um String-Codierung zu verdecken, aber nichts passiert. Die Ergebniszeichenfolge ist identisch mit der ursprünglichen Zeichenfolge.
ich wahrscheinlich bin etwas fehlt ...
Bitte helfen Sie mir !!!
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);
}
}
Das Problem ist während der Java-Client-seitigen Decodierung.Wenn eine Zeichenfolge \ x10 oder \ x11 WCF enthält, können sie fälschlicherweise in und codiert werden, die keine gültigen XML-Zeichen gemäß XML-Spezifikation sind. Ich habe hier [http://en.wikipedia.org/wiki/Code_page_850] gesehen, dass char \ x10 in codePage 850 mit char \ u25ba korrespondiert und ich dachte, dass die Konvertierung der Kodierung mein Problem lösen sollte. –
Gemäß der XML-Spezifikation müssen Prozessoren UTF-8 und UTF-16 verarbeiten. Können Sie also nicht als UTF-8 codieren und Ihre Zeichen über die Leitung an die Client-Seite versenden? – Cheeso
Nein. Wenn ich \ x10 serialisiere, ist das Ergebnis , das ist ein gültiges Unicode-Zeichen, aber kein gültiges XML-Zeichen. In anderen Welten behandeln XML-Spezifikationen UTF-* - Zeichen mit Ausnahme bestimmter Zeichenbereiche. Siehe hier [http://www.w3.org/TR/2008/REC-xml-20081126/#charsets] –