Hallo, ich muss grössere Strings mit einer Win32 Anwendung austauschen. Das funktioniert auch soweit ganz gut, solange die Zeichen in ASCII 7 bit passen. Alles darüber ist danach weg. 🙁 Ich habe mich nun lange durch die Klassen aus dem Namespace System.Text gewühlt, aber keine Funktion gefunden, die mir schnell die Zeichen oberhalb in evtl. z.B. € wandelt und wieder zurück. Eine ASP.NET Anwendung macht das auch irgendwie automatisch, wenn man in der Web.config ISO-8859-1 als Kodierung angibt. Aber mit welcher Funktion zum Geier machen die das?
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
Hallo tomaten,
mit der Encoding-Klasse.
herbivore
Also da musst Du etwas präziser werden, die hab ich mir auch schon reingezogen, aber irgendwie nichts gefunden. 🙁
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
moin thomas,
hier sogar ein Bsp. dabei
http://msdn2.microsoft.com/de-de/library/system.text.encoding(VS.80).aspx
raik
Original von kiar
moin thomas,hier sogar ein Bsp. dabei
raik
Aha, danke. Dieses Beispiel werd ich mir mal zu gemüte führen. Bei dem Beispiel das ich bisher gefunden hatte störte mich dieser Kommentar:
// Decode bytes back to a string.
// Notice missing the Pi and Sigma characters.
🙁
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
Super, jetzt hab ich wieder überall "?" drin, das hatte ich vorher auch. Die ganze Encoderei funktioniert im Zusammenspiel mit Win32 nicht. 🙁 Es muss doch irgendjemand die Funktion kennen die Zeichen ab 128 HtmlEncoded o.ä. also "& #128 ;" (ohne Leerzeichen, sonst macht die Forensoftware wieder einen Euro draus.) ! Ich habe bisher schon die Umlaute in z.B. "& auml ;" umgewandelt aber das muss doch auch (wie ASP.NET es tut) einfach mit allen Zeichen funktionieren, die es betrifft?
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
Also du musst auch schon sagen was du willst. Von HTML encodierten Strings kommt jetzt im 6. Beitrag zum ersten mal was und das hat auch noch nicht mal was direkt mit Zeichensätzen zu tun.
Wie dem auch sei, schau dir mal HttpUtility.HtmlEncode an.
Baka wa shinanakya naoranai.
Mein XING Profil.
Original von talla
Also du musst auch schon sagen was du willst. Von HTML encodierten Strings kommt jetzt im 6. Beitrag zum ersten mal was und das hat auch noch nicht mal was direkt mit Zeichensätzen zu tun.Wie dem auch sei, schau dir mal HttpUtility.HtmlEncode an.
Nein das hab ich auch im ersten Post gesagt, nur hat die Forensoftware meine Beispiele gleich in die entsprechenden Zeichen umgesetzt. 😉 Und HtmlEncode codiert nur für HTML "unsichere" Zeichen, aber keine Zeichen oberhalb 7bit.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
Jetzt weiß ich erst was du willst.
Fertig fällt mir da nichts ein, aber caste doch einfach Zeichen für Zeichen in nen Integer und bau dir daraus dann dein &#...; zusammen. Das ... ist ja nichts anderes als der numerische Wert des Charakters. Wobei ich immer noch net weiß wozu du es brauchst. Du hast ja ne Win32 Anwendung erwähnt, ich geh also von unmanaged Code einfach mal aus. Dann ist die Chance das der mit Unicode überhaupt nichts anfangen kann gar net mal so gering, besonders wenn die älter ist und aus dem englischsprachigen Raum kommt, wo man so gut wie keine Sonderzeichen brauch. Und wenn du ne Anwendung hast, die nur mit ASCII umgehen kann, dann kannst du soviel mit Zeichensätzen und Encodings rumhantieren wie du willst. Sie wird dich nicht verstehen 😉
Baka wa shinanakya naoranai.
Mein XING Profil.
Original von talla
Jetzt weiß ich erst was du willst.
Fertig fällt mir da nichts ein, aber caste doch einfach Zeichen für Zeichen in nen Integer und bau dir daraus dann dein &#...; zusammen. Das ... ist ja nichts anderes als der numerische Wert des Charakters. Wobei ich immer noch net weiß wozu du es brauchst. Du hast ja ne Win32 Anwendung erwähnt, ich geh also von unmanaged Code einfach mal aus. Dann ist die Chance das der mit Unicode überhaupt nichts anfangen kann gar net mal so gering, besonders wenn die älter ist und aus dem englischsprachigen Raum kommt, wo man so gut wie keine Sonderzeichen brauch. Und wenn du ne Anwendung hast, die nur mit ASCII umgehen kann, dann kannst du soviel mit Zeichensätzen und Encodings rumhantieren wie du willst. Sie wird dich nicht verstehen 😉
Ja genau das war das Problem. Ich habe es jetzt einfach so gemacht:
private static string ConvertToASCII(string Input)
{
string Result = Input;
// Zeichen über 127 wandeln
for (int i = 128; i < 256; i++)
Result = Result.Replace(((char)i).ToString(), "&#" + i.ToString() + ";");
return Result;
}
Diese Version geht schneller, weil ich "nur" 128 Durchläufe haben, denn die zu konvertierenden Strings sind definitiv länger. 😉
Nicht am String "Result" stören lassen. Das ist nur ein Zeichen, daß ich jahrelang Delphi gemacht habe und wilde "return"'s vermeide. 🙂
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.