Laden...

Problem mit Zeichensatz

Erstellt von fraghenne vor 15 Jahren Letzter Beitrag vor 15 Jahren 907 Views
F
fraghenne Themenstarter:in
17 Beiträge seit 2007
vor 15 Jahren
Problem mit Zeichensatz

Hallo,

ich hoffe ihr könnt mir ein kleines Problem erklären.
Ich entwickele ein Programm für einen Etikettendrucker, welcher einen String erwartet. Soweit bekomme ich auch alles das ausgegeben, was ich brauche.
Ich benötige jedoch auch ein Gradzeichen und dort ist mir folgendes aufgefallen:

Gebe ich das Zeichen (ASCII) 176 mit, wird nun daraus 194 und 184, mach ich das mit Zeichen 186 dann wird aus der 194 eine 195.

Um das zu prüfen, habe ich einen String mit 6 Zeichen umwandeln lassen.
Dieser ist: "D104øF" . Schau ich nun in das Bytearray, so finde ich dort 7 Bytewerte. Die ersten 4 Werte entsprechen der ASCII-Tabelle klar, das letzte Zeichen auch. Aber warum ist das "ø"-Zeichen in die oben genannten Werte aufgeteilt.

 public static byte[] StringToByteArray(string[] str)
       {
           int i = 0;
           string a = null;
           while(str[i] != null)
           {
            a = string.Concat(a + Convert.ToString(str[i])); i++;
           }
           System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
           return enc.GetBytes(a);
       }

Um auf Nummer sicher zu gehen, mein Problem ist die Darstellung eines "ø"-Zeichen und die Folge, warum 2 Werte in einem Bytearray zu finden sind.

Danke

Du bist crazy und willst Party? Dann schicke eine SMS mit Feuer an die 112! Schon kommen 20 Partyboys, ein Auto mit einer Lichterorgel und eine Schaumkanone zu dir nach Hause!

1.002 Beiträge seit 2007
vor 15 Jahren

Das Zeichen "ø" ist aus zwei anderen Zeichen zusammengesetzt, weswegen du die beiden Einzelzeichen zurückgeliefert bekommst ...

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

3.971 Beiträge seit 2006
vor 15 Jahren

Es kommt beispielsweise auch auf den verwendeten Zeichensatz an. UTF8 speichert ASCII-Codes unterhalb von 127 in einem Zeichen, überhalb werden 2 bis 4 Zeichen gebraucht. Bei UTF16 (wenn ich mich nicht irre), werden für alle Zeichen 2 Zeichen benötigt. Bei UTF32 wird beispielsweise für jedes Zeichen 4 Bytes gebraucht.

Besser nachzulesen auf: Wikipedia: Unicode

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

F
fraghenne Themenstarter:in
17 Beiträge seit 2007
vor 15 Jahren

Vielen Dank für die schnelle Antwort, man lernt nie aus!

Du bist crazy und willst Party? Dann schicke eine SMS mit Feuer an die 112! Schon kommen 20 Partyboys, ein Auto mit einer Lichterorgel und eine Schaumkanone zu dir nach Hause!