String von Ascii nach Ansi umwandeln

25/02/2009 - 11:19 von Norbert Schiller | Report spam
Hallo,

ich stelle momentan ein altes VB6-Projekt auf NET um. In dem VB6-Projekt
lese ich ein Textfile ein und wandle die Zeichenketten so um:

VB6:
-
Private Declare Sub OemToChar Lib "user32" Alias "OemToCharA" (ByVal StrFrom
As String, ByVal StrTo As String)

Private Function ASCIItoANSI(ByVal AsciiString As String) As String
OemToChar (AsciiString, AsciiString)
ASCIItoANSI = AsciiString
End Function

Ergebnis: sTemp = ASCIItoANSI(sTemp)


In NET gelingt es mir (momentan noch) nicht so richtig bzw. gar nicht.

sTemp = ConvertStringToEncoding(sTemp, System.Text.Encoding.ASCII,
System.Text.Encoding.GetEncoding(1252))

liefert leider das falsche Ergebnis. Die Umlaute werden als Fragezeichen
dargestellt.

Im Kofler steht jedoch für 'System.Text.Encoding.GetEncoding(1252)' = ANSI
Latin-1.

Könnte mir bitte jemand helfen und mir sagen, wo meine Lücken sind?

Danke für jede Hilfe.

Griß, Norbert
nschiller@freenet.de
 

Lesen sie die antworten

#1 Christoph Schneegans
25/02/2009 - 12:00 | Warnen spam
Norbert Schiller schrieb:

sTemp = ConvertStringToEncoding(sTemp, System.Text.Encoding.ASCII, System.Text.Encoding.GetEncoding(1252))

liefert leider das falsche Ergebnis. Die Umlaute werden als
Fragezeichen dargestellt.



Was willst du überhaupt erreichen? Strings in .NET sind _immer_
UTF-16-codiert.

Die Funktion ConvertStringToEncoding() kenne ich nicht. Gib die
Implementierung an und verrat uns, was diese Funktion bewirken soll.

In ASCII gibt es jedenfalls keine Umlaute. Wenn eine Instanz von
System.Text.Encoding ein Zeichen nicht codieren kann, gibt sie ein
Byte zurück, das dem Zeichen "?" entspricht. Die ASCIIEncoding-
Klasse verhàlt sich für alle Nicht-ASCII-Zeichen so, d.h.

MessageBox.Show(Encoding.ASCII.GetString(Encoding.ASCII.GetBytes("àöü")))

gibt nicht "àöü" aus, sondern "???".

<http://schneegans.de/expression-web...erung/> · Unicode in xWeb

Ähnliche fragen