Codierungsproblem

21/07/2008 - 14:48 von Gerold Mittelstädt | Report spam
Hallo,

stehe gerade vor einem kleinen Umcodierungsproblem.

Ich sende Rohdaten an einen Drucker, der Codepage 858 verwendet. Soweit
so gut:

Dim sBytes As Byte() = Encoding.Convert(Encoding.Unicode,
Encoding.GetEncoding(858), Encoding.Unicode.GetBytes(SB.ToString))
Dim pBytes As IntPtr
Dim dwCount As Int32 = sBytes.Length

pBytes = Marshal.AllocCoTaskMem(dwCount)
Marshal.Copy(sBytes, 0, pBytes, dwCount)

SendBytesToPrinter(PrinterName, pBytes, dwCount)

Marshal.FreeCoTaskMem(pBytes)

Problem habe ich gerade mit dem Steuerzeichen &H80, aus dem bei der
Umcodierung &HD5 wird.

Gibt es eine Möglichkeit das zu verhindern?

Viele Grüße!
 

Lesen sie die antworten

#1 Christoph Schneegans
21/07/2008 - 17:30 | Warnen spam
Gerold Mittelstàdt schrieb:

Ich sende Rohdaten an einen Drucker, der Codepage 858 verwendet.
(...) Problem habe ich gerade mit dem Steuerzeichen &H80, aus dem
bei der Umcodierung &HD5 wird.



Kann ich nicht reproduzieren. Das Steuerzeichen U+0080 im String wird
mittels Encoding.Convert() zum Byte 0x3F, also "?", was korrekt ist,
weil Codepage 858 dieses Zeichen nicht codieren kann.

Hingegen wird U+20AC im String zum Byte 0xD5, also "€", was auch
korrekt ist, vgl. <http://en.wikipedia.org/wiki/Code_page_858>.

Irgendwie bringen du oder dein Programm U+0080 und U+20AC
durcheinander. Ich finde auch schon deine Wortwahl "Steuerzeichen
&H80" unpràzise. &H80 meint eine Zahl, kein Zeichen.

<http://schneegans.de/web/xhtml/> · Klare Antworten zu XHTML

Ähnliche fragen