Sprung zum Seitenende Struktur Themen A...Z Titel << >>

CXI-Basis-Programmierreferenz / Version 2 / Tools / Zeichensatz (Codepage) /

SetAppCodePage - Codepage setzen

[C] CxiError cxiSetAppCodePage (long cpid)

[S2:STANDARD] Setzt die aktuelle Codepage für die Anwendung

cpid:
Zu setzende Codepage, gültige Werte siehe Text

return:
immer cxiNoError (=0)

Diese Funktion legt fest, wie Zeichenketten zu interpretieren sind, die von der Anwendung an CXI übergeben werden, und in welcher Codierung Strings von CXI an die Anwendung geliefert werden.

Zulässige Werte für den Parameter cpid sind:

[DOS] 850, 437
[Win16] 1252
[Win32] 1252, 850, 437
[OS/2] 850, 437

Die Voreinstellung am Systemstart ist jeweils zuerst angegeben. Diese Funktion speichert den übergebenen Wert lediglich ab, die Auswertung erfolgt jeweils an den Stellen, wo gegebenenfalls konvertiert werden muss. Ein ungültiger Parameter wird von dieser Funktion daher nicht zurückgewiesen, zukünftig werden möglicherweise weitere Werte unterstützt.

Die folgenden Konstanten können ebenfalls für cpid eingesetzt werden:

cxiAppCodePageNone:
Es wird keine Codepage benutzt. Dies ist ein interner Wert, der den Subsystemen von CXI anzeigt, dass noch keine Initialisierung der Codepage stattgefunden hat. Verwenden Sie diese Angabe nicht in einem Anwendungsprogramm.

cxiAppCodePageDefault:
Es wird die Voreinstellung benutzt. Welches der voreingestellte Zeichensatz ist, hängt vom Betriebssystem, der Oberfläche und dem Programmtyp ab. Näheres hierzu findet sich bei der Beschreibung der unterstützten Systeme.

cxiAppCodePageAuto:
Einige Systeme verwenden abhängig vom Programmtyp verschiedene Codepages als Standard (z.B. Win32). CXI kann durch diesen Wert angewiesen werden, den Programmtyp festzustellen und die entsprechende Zeichencodierung zu verwenden (bei Win32 sind dies die Codepage 850/858 für Konsolprogramme und 1252 für GUI-Programme). Dies ist NICHT die Voreinstellung, siehe Anmerkung und Empfehlung. Verwendet das aktuelle System nur einen Programmtyp, ist diese Konstante gleichbedeutend mit cxiAppCodePageDefault.

cxiAppCodePageConsole:
Diese Konstante weist CXI an, die Codepage für Konsolprogramme (mit Standard-Ein-/Ausgabe) anzunehmen. Verwendet das aktuelle System nur einen Programmtyp, ist diese Konstante gleichbedeutend mit cxiAppCodePageDefault.

cxiAppCodePageGUI:
Diese Konstante weist CXI an, die Codepage für das Fenstersystem (GUI) anzunehmen. Verwendet das aktuelle System nur einen Programmtyp, ist diese Konstante gleichbedeutend mit cxiAppCodePageDefault.

Die Umschaltung der Codepage mit SetAppCodePage() darf nur erfolgen, wenn keine CXI-Objekte existieren. Die Auswirkung einer Umschaltung auf existierende Objekte ist undefiniert! Offene CxiTreeFile-Dateien können durch eine solche Umschaltung inkonsistent werden!

Anmerkung: Beachten Sie, dass die Einstellung der Codepage für CXI Einfluss auf die Interpretation ALLER Zeichenketten hat, insbesondere auch derjenigen, die als Konstanten im Programm vorkommen! Es kann sicherer sein, die Codepage einzustellen, die bei der Erstellung des Programms (Editor) verwendet wurde, dann muss jedoch für Systemaufrufe gegebenenfalls konvertiert werden (z.B. bei Bildschirmausgaben).

Empfehlung: Die einzige sichere und korrekte Methode zur Vermeidung von Codepage-Problemen ist, alle Source-Dateien im Zeichensatz des Zielsystems zu erstellen oder nach dorthin zu konvertieren, bevor der Compiler gestartet wird. Diese Empfehlung ist unabhängig von CXI, sie gilt für alle Programme. Durch die Ähnlichkeit der unter DOS, Win16, Win32 und OS/2 benutzten Codepages im ASCII-Bereich (0 bis 127) wird die Umsetzung leider häufig vernachlässigt (insbesondere in amerikanischen Programmen ...). Es käme wohl niemand auf die Idee, einen unter Windows erstellten Sourcecode (Codepage 1252) unkonvertiert einem Compiler auf einer EBCDIC-Maschine (z.B. Codepage 037) vorzusetzen, obwohl diese beiden Zeichentabellen nahezu die gleichen Zeichen beinhalten - nur anders angeordnet. Es ist nicht auszuschließen, dass CXI demnächst auch EBCDIC unterstützt.

Anmerkung zur Codepage 850: Der Unterschied zwischen den Codepages 850 und 858 ist das Euro-Symbol. Die bisherige Codepage 850 wurde an Position 0xD5 geändert, indem das dort stehende Zeichen (kleines i ohne Punkt) durch das Euro-Symbol ersetzt wurde. Die so entstandene Codepage hat die Nummer 858. Um Probleme mit bestehenden Programmen zu vermeiden, wird sie jedoch weiterhin unter der Nummer 850 angesprochen. So ist auch bei dieser Funktion der Wert 850 (nicht 858) anzugeben.

Nähere Informationen zu Codepages und entspechende Zeichentabellen sind im jeweiligen systemspezifischen Teil zu finden.

Tabellen:
Die folgenden Tabellen zeigen eine Auswahl von Codepages. Näheres zur Verwendung und zur Konvertierung ist bei den einzelnen Systemen aufgeführt. Alle Zeichenketten werden in CXI Version 2 für die rechnerübergreifende Kommunikation und für die Abspeicherung in Dateien eindeutig auf den Transferzeichensatz 1 umgesetzt.

Codepage 437 (Tabelle und Hinweise)
Codepage 850/858 (Tabelle und Hinweise)
Codepage 1252 (Tabelle und Hinweise)

ISO 8859-1 Latin1 (Tabelle und Hinweise)
ISO 8859-15 Latin9 (Tabelle und Hinweise)

CXI-Transferzeichensatz 1 (Tabelle und Hinweise)

EBCDIC (Tabelle zum Vergleich)

Hinweis:
Diese Funktion heißt cxiSetAppCodePage (mit großem P), nicht cxiSetAppCodepage (mit kleinem p), wie in einer älteren Version der Dokumentation fälschlicherweise zu lesen war. In gleicher Weise heißen die Konstanten cxiAppCodePage... und nicht cxiAppCodepage...!

Portabilität:
Diese Funktion ist ab Version 2.09 20 definiert und in allen unterstützten Systemen verfügbar. Die möglichen Werte für den Parameter cpid sind systemabhängig, die cxiAppCodePage...-Konstanten können systemunabhängig benutzt werden.

Siehe auch:
Codepages unter DOS
Codepages unter Win16
Codepages unter Win32
Codepages unter OS/2


[i] CXI-Basis-Programmierreferenz
Version 2.10 72 (1014-001), erstellt am 15. April 2000
Textseite 60 von 855, Thema 8252 (SetAppCodePage)
[c] Copyright (c) 1996-2000 by TeraConnect GmbH

Sprung zum Seitenanfang Struktur Themen A...Z Titel << >>