C# problemer med æøå i utskrift


Forum --> .NET

Author Comment
Erik Bergh
C# problemer med æøå i utskrift 08.07.2009 14:00:23
Hei

Jeg driver å utvikler et program som skal skrive ut strekkoder. Printeren en er Intermec PF8t som er en termisk skriver. Denne tar i mot en raw-fil som er ren tekst med diverse koder for å formatere teksten riktig.

For å sende raw-data til printeren har jeg tatt i bruk objektet RawPrinterHelper, http://support.microsoft.com/kb/322091 . Dette gjør om teksten til ANSI-bytes før den sender det til printerne.
Jeg har prøvd:
- byttet ut alle ansi-charsettingen i objektet med unicode. Da er det ingen endring
- byttet Marshal.StringToCoTaskMemAnsi til Marshal.StringToCoTaskMemUni (da printer den ikke)
- Driver nå å ser på andre muligheter å konvertere stringen/sette charset på den før den sendes til objektet men uten hell.

Noen tips til dette?
Ronny Hansen
RE:C# problemer med æøå i utskrift 08.07.2009 14:25:53
Normalt ville jeg ikke brukt spoolern, men gått direkte mot LPTx eller COMx Og da må man passe på å konvertere Unicode stringer til byte array (med riktig CodePagefor å få æøå korrekt.). Alternativ kan man sikkert få fatt i en egen driver for denne printern (f.eks. OPOS) som håndterer lav nivå detaljene.
Elin Reiholm
RE:C# problemer med æøå i utskrift 08.07.2009 16:44:45
Jeg ville også kjørt direkte mot com eller socket.

For å få ÆØÅ til å fungere måtte jeg bruke encoding klassen i .net, og sette den til codepage 865 som er norsk.

eks.

Encoding enc = Encoding.GetEncoding(865);
string tekst = "æøå";
byte[] encBytes = enc.GetBytes(tekst);


deretter sender du encBytes til socket eller hva du skal kommunisere med...

-Elin-
Erik Bergh
RE:C# problemer med æøå i utskrift 29.07.2009 14:20:40
Heisann.
Etter ferien satte jeg meg ned med dette problemet igjen og det viste seg at problemet var raw-stringen jeg sendte til printeren. Ikke vet jeg hvorfor, da disse ble formatert i programmet bartender, og der ble det æøå i utskrift.

Løsningen var i alle fall å endre første linje i strengen jeg sendte til printeren fra "I8,1,001" til "I8,E,001"

Fant svaret da jeg droppet å tenke på æøå og søkte bare etter codepage og rawprinterhelper. Da fant jeg en tyrker med "samme" problem.

Copyright (C) 2006 Norwegian .NET User Group
  Powered by EPiServer