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