Wechselt zum Inhalt Deutschland - Deutsch
HP.com Deutschland Startseite Produkte und Services Support und Treiber Lösungen Kaufen
» Kontakt zu HP
Weitere Optionen
HP.com Deutschland Startseite
Informationsblatt zu Internationalisierungsfunktionen von HP-UX 11.0 - 11i > Kapitel 7 Sonstige Änderungen

Erweiterte Multibyte-Unterstützung und Unix98 Unterstützung [11i v1]

» 

Technische Dokumentation

Gesamtes Buch in PDF
» Kommentare
Text beginnt hier

 » Inhaltsverzeichnis

 » Glossar

 » Stichwortverzeichnis

Der Befehl libc wurde nach der C99 Spezifikation (ISO/IEC 9899:1999) und der Unix98 Spezifikation um eine neue Gruppe von Multibyte-APIs erweitert.

Diese APIs erweitern die bereits vorhandenen Multibyte- und Breitzeichen-APIs um folgende Möglichkeiten:

  • Ein- und Ausgeben von Breitzeichen, Multibyte-Zeichen oder beiden Zeichentypen

  • Allgemeines Bearbeiten von Breitzeichenfolgen

  • Bereitstellen erweiterter Funktionen für die Konvertierung zwischen Multibyte- und Breitzeichenfolgen

Die folgenden neuen Designkonzepte wurden eingeführt:

  • Datenstromausrichtung

  • Erneut startbare APIs und Konvertierungsstatus

Datenstromausrichtung

Ein Datenstrom kann auf Breitzeichen oder Multibyte-Zeichen ausgerichtet sein. Bei der Ausrichtung eines Datenstroms handelt es sich um ein Konzept, das auf einem Ein-/Ausgabemodell basiert, bei dem Folgendes vorausgesetzt wird: Zeichen werden innerhalb einer Anwendung als Breitzeichen gehandhabt und in Dateien als Multibyte-Zeichen gespeichert. Dabei beginnt die Ausführung aller Ein-/Ausgabefunktionen für Breitzeichen mit dem Datenstrom, der an der Grenze zwischen zwei Multibyte-Zeichen positioniert ist.

Wenn ein Datenstrom bereits einer Datei zugeordnet ist, aber noch keine Operationen für den Datenstrom ausgeführt wurden, ist der Datenstrom noch ohne Ausrichtung. Wenn eine Ein-/Ausgabefunktion für Breitzeichen auf einen Datenstrom ohne Ausrichtung angewendet wird, erhält der Datenstrom implizit eine Breitzeichenausrichtung. Wenn eine Ein-/Ausgabefunktion für Multibyte-Zeichen auf einen Datenstrom ohne Ausrichtung angewendet wird, erhält der Datenstrom in derselben Weise implizit eine Multibyte-Ausrichtung. Nach Ausrichtung des Datenstroms ist diese Ausrichtung fest definiert. Sie lässt sich erst nach Schließen des Datenstroms ändern.

Erneut startbare APIs und Konvertierungsstatus

Es wurde ein neuer Satz von APIs eingeführt, die die Konvertierung zwischen der Darstellung anhand von Multibyte-Zeichen und der Darstellung anhand von Breitzeichen vereinfachen. Diese APIs verwenden einen neuen Objekttyp, mbstate_t, der die Informationen zum Konvertierungsstatus speichern kann. Diese Informationen sind erforderlich, um Konvertierungen zwischen Multibyte-Zeichenfolgen und Breitzeichenfolgen auszuführen. Der Konvertierungsstatus legt die Funktionsweise der Konvertierungen zwischen Multibyte- und Breitzeichencodierungen fest. Bei einer Konvertierung von Multibyte-Zeichen in Breitzeichen wird vom Konvertierungsstatus u. a. die Position innerhalb des aktuellen Multibyte-Zeichens (als Folge von Zeichen oder als Breitzeichensummenfeld) gespeichert. Bei Konvertierungen in beiden Richtungen werden im Konvertierungsstatus der aktuelle Shift-Status (sofern vorhanden) und, falls möglich, die Codierungsregel gespeichert.

Da diese APIs die Teilzeichendaten speichern, kann eine Multibyte-Folge Byte für Byte verarbeitet werden. Die Verarbeitung lässt sich dabei jederzeit unterbrechen oder fortsetzen (neu starten). Die neuen Dienstprogramme zur Konvertierung von Multibyte-/Breitzeichen können erneut gestartet werden, da sie die Daten im Objekt mbstate_t verwenden.

Bereitstellen der MSE/Unix98 Funktionsweise

Für die MSE/Unix98 Funktionsweise müssen die Programme mit Hilfe der Makrodefinition -D_XOPEN_SOURCE=500 kompiliert werden. Dabei muss die Variable UNIX_STD in der Umgebung festgelegt werden.

In den Korn-, Bourne- und POSIX-Shells wird dies auf folgende Weise erreicht:

UNIX_STD=98
export UNIX_STD

In der C-Shell wird dies mit folgendem Befehl erreicht:

setenv UNIX_STD 98

Für diese Funktionalität ist ein cc-Compiler erforderlich, der den Leistungsumfang des HP92453-01 A.11.01.20 HP C-Compilers oder eines neueren Compilers bietet.

Die folgende Liste enthält eine Zusammenfassung der neuen und geänderten APIs. Weitere Einzelheiten finden Sie auf den zugehörigen Hilfeseiten.

Neue Schnittstellen

Die folgenden APIs wurden neu zu libc hinzugefügt und haben keine Auswirkungen auf den vorhandenen Code:

btowc

btowc() gibt die Breitzeichendarstellung eines bestimmten Ein-Byte-Zeichens zurück.

fwide

fwide() legt die Datenstromausrichtung fest.

fwprintf, swprintf, wprintf

Diese APIs drucken formatierte Breitzeichenausgaben.

fwscanf, swscanf, wscanf

Diese APIs verarbeiten formatierte Breitzeicheneingaben.

mbrlen

mbrlen() gibt die Anzahl der Bytes in einem Breitzeichen zurück. Die Kategorie LC_CTYPE der aktuellen Sprachumgebung wirkt sich auf die Funktionsweise dieser Funktion aus.

mbrtowc

mbrtowc() konvertiert einen Bytedatenstrom in Breitzeichencode. Die Kategorie LC_CTYPE der aktuellen Sprachumgebung wirkt sich auf die Funktionsweise dieser Funktion aus.

mbsinit

mbsinit() legt fest, ob das Objekt, auf das durch das erste Argument mit den Daten zum Shift-Status verwiesen wird, den anfänglichen Konvertierungsstatus beschreibt.

mbsrtowcs

mbsrtowcs() konvertiert eine Zeichenfolge in eine Breitzeichenfolge. Die Kategorie LC_CTYPE der aktuellen Sprachumgebung wirkt sich auf die Funktionsweise dieser Funktion aus.

towctrans

towctrans() wird zwecks Zeichentranskription bereitgestellt. Die aktuelle Einstellung für die Kategorie LC_CTYPE muss mit der Einstellung beim Aufrufen von wctrans() übereinstimmen.

vfwprintf, vswprintf, vwprintf

Diese APIs werden zur Verfügung gestellt, um mit Breitzeichen formatierte Ausgaben des Arguments stdarg zu drucken. Sie entsprechen fwprintf(3C) mit Ausnahme davon, dass sie mit Hilfe einer über stdarg.h definierten Argumentliste und nicht mit Hilfe einer variablen Anzahl von Argumenten aufgerufen werden.

wcrtomb

wcrtomb() konvertiert ein Breitzeichen in ein Multibyte-Zeichen. Dabei wird die Anzahl an Bytes bestimmt, die zur Darstellung des Zeichens gemäß dem Breitzeichencode erforderlich sind, der durch das zweite Argument angegeben wird.

wcsrtombs

wcsrtombs() konvertiert eine Breitzeichenfolge in eine Zeichenfolge. Die Kategorie LC_CTYPE der aktuellen Sprachumgebung wirkt sich auf die Funktionsweise dieser Funktion aus.

wcsstr

wcsstr() sucht eine Teilzeichenfolge in einer Breitzeichenfolge. Die Kategorie LC_CTYPE der aktuellen Sprachumgebung wirkt sich auf die Funktionsweise dieser Funktion aus.

wctob

wctob() konvertiert Breitzeichen in Ein-Byte-Zeichen.

wctrans

wctrans() definiert die Zeichenzuordnung in der aktuellen Sprachumgebung. Dabei sind alle von wctrans() zurückgegebenen Zeichen gültig, bis ein Aufruf von setlocale() erfolgt, der die Kategorie LC_CTYPE ändert.

wmemchr, wmemcmp, wmemcpy, wmemmove, wmemset

Diese APIs funktionieren mit Breitzeichen in Speicherbereichen:

  • wmemchr() sucht ein Breitzeichen in einem Speicher-Array.

  • wmemcmp() vergleicht Breitzeichen im Speicher.

  • wmemcpy() kopiert Breitzeichen im Speicher.

  • wmemmove() kopiert Breitzeichen im Speicher mit überlappenden Bereichen.

  • wmemset() legt Breitzeichen im Speicher fest.

Geänderte Schnittstellen

Bei den folgenden APIs wurde möglicherweise die Funktionsweise oder ein Parametertyp geändert. Dies könnte sich auf den vorhandenen HP-UX Code auswirken, wenn Unix98 Unterstützung ausgewählt wird.

fprintf, printf, snprintf, sprintf, fscanf, scanf, sscanf

printf(3C), scanf(3C) und zugehörige Funktionen unterstützen den neuen Qualifikator 1 (den Buchstaben), um die Breitzeichenkonvertierung in eine vorgegebene Formatzeichenfolge auszuwählen und den Wert für errno auf EILSEQ festzulegen, wenn die Daten aus dem eingehenden Datenstrom kein gültiges Breitzeichen bilden.

fputwc, putwc, putwchar

Der Typ des ersten Arguments wird von wint_t in wchar_t geändert.

freopen

Unabhängig vom Modus des zugrunde liegenden Datenstroms wird nach einem erfolgreichen Aufruf der Funktion freopen() die Ausrichtung des Datenstroms auf keine Ausrichtung zurückgesetzt, und das zugehörige Objekt mbstate_t wird auf eine Beschreibung des anfänglichen Konvertierungsstatus festgelegt.

wcschr, wcsrchr

Der Typ des zweiten Arguments wird von wint_t in wchar_t geändert.

Druckbare Version
Datenschutzerklärung

Impressum
Mit der Benutzung dieser Website erklären Sie sich mit den entsprechenden Nutzungsbedingungen einverstanden
© 2001-2003, 2005 Hewlett-Packard Development Company, L.P.