PPL6-Icon Patrick's Programming Library Version 6.4.21 - Dokumentation
ppl6::CIconv Klassenreferenz

Character-Konvertierung. Mehr ...

Öffentliche Methoden

 CIconv ()
 Der Konstruktor der CIconv-Klasse. Mehr ...
 
 CIconv (const char *fromcode, const char *tocode)
 Der Konstruktor der CIconv-Klasse. Mehr ...
 
 ~CIconv ()
 Der Destruktor der CIconv-Klasse. Mehr ...
 
int Init (const char *fromcode, const char *tocode)
 Intialisierung der CIconv-Klasse. Mehr ...
 
CString Transcode (CString &str)
 String von einem Charset in ein anders Transcoden. Mehr ...
 
char * Transcode (const char *str, size_t size=0)
 String von einem Charset in ein anderes Transcoden. Mehr ...
 
char * Transcode (const char *source, size_t size_source, size_t *size_target)
 String von einem Charset in ein anderes Transcoden. Mehr ...
 
int Transcode (const char *source, size_t size, CBinary &target)
 String von einem Charset in ein anderes Transcoden. Mehr ...
 
int TranscodeString (CString &str)
 String von einem Charset in ein anders Transcoden. Mehr ...
 

Öffentliche, statische Methoden

static int Enumerate (CArray &list)
 Auflisten aller unterstützten Charsets. Mehr ...
 
static int Enumerate (CAssocArray &list)
 Auflisten aller unterstützten Charsets. Mehr ...
 

Private Attribute

void * cd
 
CString From
 
CString To
 

Ausführliche Beschreibung

Include:
#include <ppl6.h>
Beschreibung:

Die Klasse CIconv kann verwendet werden, um einen String von einem Character-Encoding in ein anderes umzuwandeln, beispielsweise von UTF-8 in ISO8859-1.

Dazu muss nach der Instanzierung der Klasse die Init-Funktion aufgerufen werden, wobei als erster Parameter das vorhandene Encoding angegeben werden muss und als zweiter das gewünschte. Anschließend können die Functionen Transcode und TranscodeString verwendet werden.

Damit die Klasse verwendet werden kann, muss die PPL6-Library mit der ICONV-Library kompiliert worden sein. Ist dies nicht der Fall, liefern alle Funktionen einen Fehler und setzen den Fehlercode 286.

Beispiel:
In dem folgenden Beispiel wird ein String aus dem Charset ISO-8859-1 nach UTF-8 konvertiert:
#include <ppl6.h>
int main(int argc, char **argv)
{
ppl6::CIconv Iconv;
const char *quellstring="Ein Text im Charset ISO-8859-1 mit Umlauten: äöü";
if (!Iconv.Init("ISO-8859-1","UTF-8")) {
return 0;
}
char *zielstring=Iconv.Transcode(quellstring);
if (!zielstring) {
return 0;
}
printf ("Neuer String: %s\n",zielstring);
free(zielstring);
return 0;
}

Beschreibung der Konstruktoren und Destruktoren

ppl6::CIconv::CIconv ( )
Include:
#include <ppl6.h>
Beschreibung:
Der Konstruktor der CIconv-Klasse
ppl6::CIconv::CIconv ( const char *  fromcode,
const char *  tocode 
)
Include:
#include <ppl6.h>
Beschreibung:
Der Konstruktor der CIconv-Klasse
ppl6::CIconv::~CIconv ( )
Include:
#include <ppl6.h>
Beschreibung:
Der Destruktor der CIconv-Klasse

Dokumentation der Elementfunktionen

int ppl6::CIconv::Enumerate ( CArray list)
static

Mit dieser Funktion werden die Namen aller unterstützten Charsets in allen bekannten Variationen zur Weiterverarbeitung in das Array list kopiert.

Parameter
[out]listEin CArray-Objekt, in dem die Namen der Charsets abgelegt werden sollen. Die Liste wird zu beginn geleert, eventuell noch vorhandene Einträge gehen somit verloren.
Rückgabe
Bei Erfolg gibt die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CIconv::Enumerate ( CAssocArray list)
static

Mit dieser Funktion werden die Namen aller unterstützten Charsets in allen bekannten Variationen zur Weiterverarbeitung in das Assoziative Array list kopiert. Dabei werden identische Variationen eines Charsets auf einer Ebene zusammengefasst.

Parameter
[out]listEin CAssocArray-Objekt, in dem die Namen der Charsets abgelegt werden sollen. Die Liste wird zu beginn geleert, eventuell noch vorhandene Einträge gehen somit verloren.
Rückgabe
Bei Erfolg gibt die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CIconv::Init ( const char *  fromcode,
const char *  tocode 
)
Include:
#include <ppl6.h>
Beschreibung:
Mit diesem Befehl wird die CIconv-Klasse mit den gewünschten Character-Encodings intialisiert.
Parameter
fromcodeEin Pointer auf einen String, der den Namen des Quell-Encodings enthält, beispielsweise "ISO-8859-1".
tocodeEin Pointer auf einen String, der den Namen des Ziel-Encodings enthält, beispielsweise "UTF-8"
Rückgabe
Im Erfolgsfall liefert die Funktion true (1) zurück, im Fehlerfall false (0). Es können folgende Fehler auftreten_
  • 286: LibIconv ist nicht einkompiliert
  • 287: Charset wird nicht unterstuetzt
Bemerkungen
Welche Charsets unterstützt werden, kann mit dem Befehl "iconv" herausgefunden werden. Um alle Charsets zu listen, ist folgendes einzugeben:
iconv -l
CString ppl6::CIconv::Transcode ( CString str)
Include:
#include <ppl6.h>
Beschreibung:
Mit diesem Befehl wird der angegebene String in das durch die Init-Funktion definierte Ziel-Encoding umgewandelt.
Parameter
strEine CString-Klasse
Rückgabe
Im Erfolgsfall gibt die Funktion den Transkodierten String zurück, im Fehlerfall ist der zurückgelieferte String leer. In diesem Fall ist einer der folgenden Fehlercodes gesetzt:
  • 2: Nicht genug Speicher (ENOMEM)
  • 194: Parameter darf nicht NULL sein [CString *CIconv::Transcode(CString *str)]
  • 286: LibIconv ist nicht einkompiliert
  • 288: Charset ist nicht initialisiert
  • 289: Konvertierung fehlgeschlagen
char * ppl6::CIconv::Transcode ( const char *  str,
size_t  size = 0 
)
Include:
#include <ppl6.h>
Beschreibung:
Mit diesem Befehl wird der angegebene String in das durch die Init-Funktion definierte Ziel-Encoding umgewandelt.
Parameter
[in]strDer Quellstring mit Null-Byte am Ende
[in]sizeOptionaler Parameter, der die Anzahl zu übersetzender Bytes im String str angibt. Per Default wird der komplette String transkodiert.
Rückgabe
Im Erfolgsfall gibt die Funktion einen char-Pointer auf den neuen String zurück. Dazu wird intern die "malloc"-Funktion aufgerufen, um den benötigten Speicher zu reservieren. Der Anwender muss dafür sorgen, dass dieser Speicher mit "free" wieder freigegeben wird!

Im Fehlerfall wird NULL zurückgegeben und einer der folgenden Fehlercodes gesetzt:

  • 2: Nicht genug Speicher (ENOMEM)
  • 194: Parameter darf nicht NULL sein [char *CIconv::Transcode(const char *str)]
  • 286: LibIconv ist nicht einkompiliert
  • 288: Charset ist nicht initialisiert
  • 289: Konvertierung fehlgeschlagen
char * ppl6::CIconv::Transcode ( const char *  source,
size_t  size_source,
size_t *  size_target 
)
Include:
#include <ppl6.h>
Beschreibung:
Mit diesem Befehl wird der angegebene String in das durch die Init-Funktion definierte Ziel-Encoding umgewandelt.
Parameter
[in]sourceDer Quellstring. Dieser muss im Format vorliegen, das als Quellformat in der Init-Funktion angegeben wurde
[in]size_sourceAnzahl zu übersetzender Bytes (nicht Zeichen) im Quellstring
[out]size_targetIn dieser Variable wird die Größe des kodierten Strings in Bytes abgelegt.
Rückgabe
Im Erfolgsfall gibt die Funktion einen char-Pointer auf den neuen String zurück. Dazu wird intern die "malloc"-Funktion aufgerufen, um den benötigten Speicher zu reservieren. Der Anwender muss dafür sorgen, dass dieser Speicher mit "free" wieder freigegeben wird!
int ppl6::CIconv::Transcode ( const char *  source,
size_t  size,
CBinary target 
)
Include:
#include <ppl6.h>
Beschreibung:
Mit diesem Befehl wird der angegebene String in das durch die Init-Funktion definierte Ziel-Encoding umgewandelt.
Parameter
[in]sourceDer Quellstring. Dieser muss im Format vorliegen, das als Quellformat in der Init-Funktion angegeben wurde
[in]sizeAnzahl zu übersetzender Bytes (nicht Zeichen) im Quellstring
[out]targetEin CBinary-Objekt, im dem der transkodierte String abgelegt wird.
int ppl6::CIconv::TranscodeString ( CString str)
Include:
#include <ppl6.h>
Beschreibung:
Mit diesem Befehl wird der angegebene String in das durch die Init-Funktion definierte Ziel-Encoding umgewandelt.
Parameter
[in,out]strDer umzuwandelnde String
Rückgabe
Im Erfolgsfall gibt die Funktion true (1) zurück und der im Parameter str enthaltene String wurde umgewandelt.

Im Fehlerfall wird false (0) zurückgegeben und einer der folgenden Fehlercodes gesetzt:

  • 2: Nicht genug Speicher (ENOMEM)
  • 194: Parameter darf nicht NULL sein [int CIconv::TranscodeString(CString *str)]
  • 286: LibIconv ist nicht einkompiliert
  • 288: Charset ist nicht initialisiert
  • 289: Konvertierung fehlgeschlagen

Dokumentation der Datenelemente

void* ppl6::CIconv::cd
private
CString ppl6::CIconv::From
private
CString ppl6::CIconv::To
private

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: