Announcement

Collapse
No announcement yet.

7-Bit-Zeichensatz ASCII-DE

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • 7-Bit-Zeichensatz ASCII-DE

    Ich möchte gern einen Typenraddrucker mit einem 7-Bit-Zeichensatz (ASCII-DE; ISO646-DE; DIN66003) ansteuern:

    ASCII
    !"#$%&'()*+,-./0123456789:;<=>?
    @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
    abcdefghijklmnopqrstuvwxyz{|}~

    ASCII-DE
    !"#$%&'()*+,-./0123456789:;<=>?
    §ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ^_`
    abcdefghijklmnopqrstuvwxyzäöüß

    Bisher wird ein Nadeldrucker mit der CodePage 850 angesteuert:

    PrintWriter pw = new PrintWriter("lpt0:", "cp850");

    pw.println("äöüß");

    pw.close();

    Da es für die deutsche Version des ASCII-Zeichensatzes keine von Java unterstützte CodePage gibt, komme ich sicher nicht um die Programmierung eines Filters herum. Habt Ihr eine Idee wie ich das realisieren könnte?

    Viele Grüße
    Martin
    Zuletzt editiert von maertinibroes; 15.12.2009, 07:34.

  • #2
    Regulärer Ausdruck -> suchen und ersetzen
    Christian

    Comment


    • #3
      Hallo Christian

      Vielen Dank für die Antwort. Diese Methoden bietet das PrintWriter-Objekt leider nicht. Hast Du ein Beispiel für mich?

      Gruß Martin

      Comment


      • #4
        Sicherlich bietet das das PrintWriter-Object nicht. Den auszugebenden String matchen oder vom Printwriter ableiten und die println überschreiben und dort die Filterung vornehmen
        Zuletzt editiert von Christian Marquardt; 16.12.2009, 11:09.
        Christian

        Comment


        • #5
          Der korrekte Weg wäre einen CharSetProvider für dieses Encoding selbst zu implementieren und über den Service-Provider-Mechanismus in Java zu integrieren. Dazu muß man die Klassen CharsetProvider, Charset, CharsetDecoder, CharsetEncoder ableiten. Das ist leider nicht so einfach, aber zum Glück gibt es genug Beispiele für custom CharsetProvider und sogar einen passenden für ASCII-DE:

          http://jdtaus.svn.sourceforge.net/vi...tProvider.java

          Diese Datei (4 Klassen) compilieren, wie hier beschrieben in META-INF/services registrieren:

          http://java.sun.com/javase/6/docs/ap...tProvider.html

          und man kann einfach schreiben:

          Code:
          PrintWriter pw = new PrintWriter("lpt0:", "iso646-de");

          Comment


          • #6
            Super Lösung
            Christian

            Comment


            • #7
              Das finde ich auch..

              Ich arbeite mit NetBeans und hab einen sehr einfachen Weg gefunden.

              Die Datei "jdtaus-banking-charsets-1.0.jar" unter Bibliotheken->JAR/Verzeichnis hinzufügen und schon ergibt:


              PrintWriter pw = new PrintWriter("COM1", "iso646-de");

              pw.print("ÄÖÜ äöü ß");

              pw.close();



              "[\] {|} ~"



              Vielen Dank..
              Zuletzt editiert von maertinibroes; 08.03.2010, 09:27.

              Comment


              • #8
                Filter

                Ging leider doch nicht so wie ich dachte. Dieser CharSetProvider hat mir auch sämtliche Steuerbefehle einschließlich 0D 0A mit dem Fragezeichen überschrieben. Also ist so keine vernünftige Ausgabe möglich. Hier meine Lösung:



                import java.io.FileNotFoundException;
                import java.io.PrintWriter;

                public class Typenraddrucker {

                public Typenraddrucker() {

                try {
                PrintWriter pw = new PrintWriter("COM1");

                pw.println( Filter("§ÄÖÜäöüß") );

                pw.close();

                } catch (FileNotFoundException ex) { ex.printStackTrace(); }
                }

                String Filter(String s) {

                s = s.replace((char)'§', (char)0x40);
                s = s.replace((char)'Ä', (char)0x5B);
                s = s.replace((char)'Ö', (char)0x5C);
                s = s.replace((char)'Ü', (char)0x5D);
                s = s.replace((char)'ä', (char)0x7B);
                s = s.replace((char)'ö', (char)0x7C);
                s = s.replace((char)'ü', (char)0x7D);
                s = s.replace((char)'ß', (char)0x7E);
                return s;

                }
                }



                Gruß Martin
                Zuletzt editiert von maertinibroes; 08.03.2010, 09:27.

                Comment

                Working...
                X