CODEPAGE.HTM
___________

Dokumentation zum Logbuchprogramm CLLOG von DF7BE

Copyright (c) 1997-2020 DF7BE Wilfried Brunken
Creative Commons License CC BY-SA 2.0 de


"Zeichensätze (Codepages)"
___________________________________________________________________

"@(#)CODEPAGE.HTM Stand : 26.03.2020"
gültig für CLLOG Version 3.0.0

ID-String:
"@(#)$Id: codepage.htm 20 2020-05-03 21:03:53Z df7be $"

Änderungsübersicht

26.03.2020   DF7BE   Harbour und HWGUI
09.06.2017   DF7BE   Blockgrafikzeichen in Programmen und HTML 
04.12.2015   DF7BE   Letzter undokumentierter Stand

Inhalt:
_______

1. Codepages


1. Codepages
_____________________

Die heutigen LINUX-Umgebungen verwenden UTF-8, damit lassen sich
fast alle Sprachen dieser Welt anzeigen.

Windows verwendet weiterhin eigene Zeichensätze, die je nach Spracheinstellung im
System verwendet werden. UTF-8 wird derzeit nur von Programmen verwendet, dessen Verwendung
der Programmierer eingerichtet hat. Für die aktuellen Versionen von MinGW, Harbour und
HWGUI ist das der Fall. 

Harbour und HWGUI benutzen Codepage Mapping, was unter jedem Betriebsystem eine
korrekte Darstellung sicherstellt.

Intern verwendeten wir bisher die Codepage 850 "CP850"(westeuropäisch) ,
das ist mehr als ausreichend für ein deutsches Programm.
Das Euro-Zeichen wird ab Version 3.0.0 von CLLOG mit der Codepage 858 "CP858" unterstützt.
Diese unterscheidet sich nur dadurch, da&szli; an der Position xD5 das Euro-Zeichen
(€)eingesetzt wird, der Rest ist wie CP850.


Somit werden von CLLOG zum ASCII Zeichensatz die folgenden weiteren Zeichen unterstüzt:
Deutsche Umlaute Ä Ö Ü ä ö ü, ß und € 

Die bisherige Einstellung CP437 (IBM Englisch) hat auch Einfluss darauf, wie die Blockgrafik-Zeichen
dargestellt werden. Da die erste Version unter diesem Zeichensatz erstellt wurde, sieht
das bei BROWSE , ACHOICE oder "@ y1 , x1 TO y2 , x2" bei CP850 manchmal anders aus.
Das werden wir noch im Laufe der Zeit optimieren und auch an dieser Stelle beschreiben.
Soweit kann nur gesagt werden, dass alle Blockgrafikzeichen, die doppelte Striche mit
einfachen Strichen verbinden, in CP850/858 herausgenommen wurden.
Weil inzwischen CP850 auf den meisten Computern verbreitet ist,
wird empfohlen, CP437 nicht mehr zu berücksichtigen.

Liste der Umlaute in CP850/858:

   Ä : CAGUML  CHR(142)
   Ö : COGUML  CHR(153)
   Ü : CUGUML  CHR(154)
   ä : CAKUML  CHR(132)
   ö : COKUML  CHR(148)
   ü : CUKUML  CHR(129)
   ß : CSZUML  CHR(225)


Die 2. Spalte in dieser Tabelle bezeichnet den Namen der PUBLIC-Variable,
die den Wert des Zeichens in der vom System verwendeten Codierung verwendet wird.
Die Initialisierung erfolgt mit Funktionen aus CODEPAGE.PRG und CODEPAGEW.PRG. Die
Verwendung dieser Variablen ist Hauptsächlich für Textausgaben vorgsehen.   
   
Empfohlene Beispiele in der Anwendung der Blockgrafikzeichen sollten so aussehen:
(Werte für Zeichendarstellung numerisch, CP850)

Einfach-Linie:

        196
    ┌────────┐
    │        │
179 │        │
    │        │
    │        │
    └────────┘

        194 
218 ┌────┬────┐ 191
    │    │    │
    │    │    │
    │    │    │
    │    │197 │
195 ├────┼────┤ 180
    │    │    │
    │    │    │
    │    │    │
    │    │    │
192 └────┴────┘ 217
        193    


Doppel-Linie:


        205 
    ╔════════╗ 
    ║        ║
186 ║        ║
    ║        ║
    ║        ║
    ╚════════╝


        203
201 ╔════╦════╗ 187
    ║    ║    ║
    ║    ║    ║
    ║    ║    ║
    ║    ║206 ║
204 ╠════╬════╣ 185
    ║    ║    ║
    ║    ║    ║
    ║    ║    ║
    ║    ║    ║
200 ╚════╩════╝ 188
        202

Gemischte Verwendung:


Die Zeichen lassen sich mit der Funktion "CHR(n)" erzeugen, Wiederholung durch "REPICATE(CHR(n),m)". 
In der folgenden Tabelle wurden
einige Sonderzeichen (mit Blockgrafikzeichen) aufgeführt (Die Blockgrafikzeichen werden nur
dann richtig angezeigt, wenn Ihr Browser UTF-8 Zeichensätze unterstützt):

Tabelle: Blockgrafik- und Sonderzeichen
_______________________________________
 
Füllzeichen

219 = █    Block voll
 
223 = ▀    Halber Block oben

220 = ▄    Halber Block unten 

Rasterzeichen

176 = ░    Raster schwach
177 = ▒    Raster mittel
178 = ▓    Raster stark

Blockgrafikzeichen einfach

179 = │    senkrechter Strich
180 = ┤    senkrechter Strich mit Anschluss links
195 = ├    senkrechter Strich mit Anschluss rechts
196 = ─    waagerechter Strich
194 = ┬    waagerechter Strich mit Anschluss unten
193 = ┴    waagerechter Strich mit Anschluss oben
218 = ┌    Ecke oben links
191 = ┐    Ecke oben rechts
192 = └    Ecke unten links
217 = ┘    Ecke unten rechts
197 = ┼    Kreuzung


Blockgrafikzeichen doppelt

186 = ║    senkrechter Strich
185 = ╣    senkrechter Strich mit Anschluss links
204 = ╠    senkrechter Strich mit Anschluss rechts
205 = ═    waagerechter Strich
203 = ╦    waagerechter Strich mit Anschluss unten
202 = ╩    waagerechter Strich mit Anschluss oben
201 = ╔    Ecke oben links
187 = ╗    Ecke oben rechts
200 = ╚    Ecke unten links
188 = ╝    Ecke unten rechts
206 = ╬    Kreuzung


Sonstige Zeichen:

248 = °   Grad-Zeichen


Euro-Zeichen aus CP858 (wird unterstützt):

0xd5 = €     Euro-Zeichen CHR(213)


Beispiele für nicht zu verwendende Blockgrafikzeichen aus CP437:

221 = ▌ halber Block links
222 = ▐ halber Block rechts (erscheint in CP850 als Ì)

182 = ╢ doppelter senkrechter Strich mit Anschluss einfach links *)
199 = ╟ doppelter senkrechter Strich mit Anschluss einfach rechts *)
181 =  ╡ einfacher senkrechter Strich mit Anschluss doppelt links **)
198 =  ╞ einfacher senkrechter Strich mit Anschluss doppelt rechts **)

209 = ╤ doppelter waagerechter Strich mit Anschluss einfach unten ***)
207 = ╧ doppelter waagerechter Strich mit Anschluss einfach oben ***)
210 = ╥ einfacher waagerechter Strich mit Anschluss doppelt unten ****)
208 = ╨ einfacher waagerechter Strich mit Anschluss doppelt oben ****)

216 = ╪ Kreuzung einfacher senkrechter Strich / doppelter waagerechter Strich
215 = ╫ Kreuzung doppelter senkrechter Strich / einfacher waagerechter Strich
  
  
*)    Ersatzweise nehmen: 186 = ║  (senkrechter doppelter Strich)
**)   Ersatzweise nehmen: 179 = │  (senkrechter einfacher Strich)
***)  Ersatzweise nehmen: 205 = ═  (waagerechter doppelter Strich)
****) Ersatzweise nehmen: 196 = ─  (waagerechter einfacher Strich)


LINUX:
______

Mit
 locale -a <pipe> grep DE  (<pipe> = "|")
kann man auf LINUX-Systemen anzeigen lassen, welche Einstellungen vom System unterstützt
werden. 
Wichtige Einträge für uns sind:
de_DE.utf8
de_DE.iso88591
de_DE.iso885915@euro

Durch setzen von
  export LANG=de_DE.iso88591
in der bash wird der Zeichensatz auf ISO umgestellt.
Die Einträge müssen genau so gemacht werden, wie das Kommando
locale es anzeigt, d.h. unter Berücksichtigung der Groß- und
Kleinschreibung.

Bei Ubuntu LINUX und MintLINUX ist die Systemvorgabe UTF-8 passend, so dass hier
keine zusätzlichen Einstellungen erforderlich sind !

Weitere Hinweise in den Quelltexten von "codepage.prg" und "codepagew.prg"

Der Code enhält hier Methoden zum Zeichenmapping, damit Zeichen
von der Tastatur zumindest für die deutschen Umlaute und ß
richtig umgesetzt werden.

Die Einstellung für UTF-8 stellt sich als korrekt heraus !

In den Quelltexten der Hauptprogramme regelt die folgende Einstellung
die Auswahl der Codepage in Harbour-Programmen:
(Beispiel)
* --- Harbour-Einstellungen ---
REQUEST HB_LANG_DE
HB_LANGSELECT("DE")   && Codepage 850/858
* Old:
* REQUEST HB_CODEPAGE_DE850
* set(_SET_CODEPAGE,"DE850")
* New: CP 858 with Euro currency sign
REQUEST HB_CODEPAGE_DE858
set(_SET_CODEPAGE,"DE858")
SETMODE(25,80)
* -----------------------------
Für Spracheinstellung sieht dieser Abschnitt geringfügig anders aus.

Durch die Anweisung
#include "hb_setts.ch"
wird die Anweisungsfolge in ein Hauptprogramm eingebunden.

Die folgenden Variablen enthalten die Zeichen der deutschen Umlaute,
die bei Textausgaben und Abfragen verwendet werden können:

*      AE      OE       UE       ae      oe       ue       sz
PUBLIC CAGUML, COGUML , CUGUML , CAKUML, COKUML , CUKUML , CSZUML , EURO

Andere Sonderzeichen wie das Grad-Zeichen oder die Blockgrafik-Zeichen
werden ebenfalls in Variablen gehalten

Für HWGUI ist die Vorgehensweise ähnlich, spezielle Aufrufe laden unterschiedliche 
Codepages für Anzeige und Datenbanken.
Die Datenbank (*.dbf) hat weiterhin CP850/858, das Betriebsystem arbeitet mit DEWIN (Windows)
und UTF-8 (LINUX). Die Darstellung ist immer korrekt, Tastatureingaben werden entsprechend
richtig umgesetzt.

Siehe auch:
www.ascii-codes.com/cp850.html