Moin, Wenn ich in C mittels der Funktion iconv() Strings von UTF-8 nach irgendeinem ollen ISO-8859-X wandeln will, kann ich dann davon ausgehen, dass der ISO String keinesfalls laenger als der UTF-8 String ist - oder kennt da wer gleich ein Gegenbeispiel? Gruss WK
Solange du kein //TRANSLIT benutzt, sollte die Annahme passen.
Dergute W. schrieb: > kann ich dann davon ausgehen, > dass der ISO String keinesfalls laenger als der UTF-8 String ist Ja, passt so. leo
foobar schrieb: > Solange du kein //TRANSLIT benutzt, sollte die Annahme passen. Wassndasfuernapparat? Gruss WK
Du musst dir erstmal darüber Gedanken machen das es in deinen utf-8 String Zeichen geben kann, die es in deiner iso Codierung nicht gibt. Ferner gibt es alternative Zeichenversionen. Wird in deinem utf-8 String z.B. ein Minus mit dem Zeichen für Minus dargestellt, dann hast du ein Problem. In den iso Codierungen gibt es kein Zeichen für Minus. Es gibt nur ein Zeichen welches als Bindestrich und Minus gemeinsam genutzt wird. Das ist aber ein komplett anderes Zeichen. Du solltest dich erstmal grundsätzlich mit Unicode beschäftigen. Sonnst tappst du da zwangsläufig früher oder später in Fallen
Moin, test schrieb: > Du musst dir erstmal darüber Gedanken machen das es in deinen utf-8 > String Zeichen geben kann, die es in deiner iso Codierung nicht gibt. Nein, das muss ich nicht. Wenn da Zeichen drinnen sind, die's nicht in meinem ISO gibt, dann wird iconv() hoffentlich -1 zurueckgeben und errno auf EILSEQ oder EINVAL oder sowas setzen. test schrieb: > Ferner gibt es alternative Zeichenversionen. Wird in deinem utf-8 String > z.B. ein Minus mit dem Zeichen für Minus dargestellt, dann hast du ein > Problem. In den iso Codierungen gibt es kein Zeichen für Minus. Es gibt > nur ein Zeichen welches als Bindestrich und Minus gemeinsam genutzt > wird. Das ist aber ein komplett anderes Zeichen. Mag sein, ist mir aber auch ziemlich egal. Wenn da einer irgendwelche komischen Strings eingibt, kanns schon sein, dass da nix vernueftiges dabei rauskommt. Das ist nicht tragisch. Tragisch waere, wenn einer Strings eingibt, die dann durch die Konversion laenger werden als das Original... Gruss WK
>> Solange du kein //TRANSLIT benutzt, sollte die Annahme passen. > > Wassndasfuernapparat? man iconv_open:
1 | ICONV_OPEN(3) Linux Programmer's Manual ICONV_OPEN(3) |
2 | |
3 | |
4 | |
5 | NAME |
6 | iconv_open - allocate descriptor for character set conversion |
7 | |
8 | SYNOPSIS |
9 | #include <iconv.h> |
10 | |
11 | iconv_t iconv_open(const char *tocode, const char *fromcode); |
12 | |
13 | DESCRIPTION |
14 | The iconv_open() function allocates a conversion descriptor suit‐ |
15 | able for converting byte sequences from character encoding fromcode |
16 | to character encoding tocode. |
17 | |
18 | The values permitted for fromcode and tocode and the supported com‐ |
19 | binations are system-dependent. For the GNU C library, the permit‐ |
20 | ted values are listed by the iconv --list command, and all combina‐ |
21 | tions of the listed values are supported. Furthermore the GNU C |
22 | library and the GNU libiconv library support the following two suf‐ |
23 | fixes: |
24 | |
25 | //TRANSLIT |
26 | When the string "//TRANSLIT" is appended to tocode, |
27 | transliteration is activated. This means that when a char‐ |
28 | acter cannot be represented in the target character set, it |
29 | can be approximated through one or several similarly looking |
30 | characters. |
31 | |
32 | //IGNORE |
33 | When the string "//IGNORE" is appended to tocode, characters |
34 | that cannot be represented in the target character set will |
35 | be silently discarded. |
36 | |
37 | ... |
Moin, Heissen Dank. Genau so Zeugs vom Kaliber //TRANSLIT such' ich. OK, in dem Fall ist's nicht schlimm, weil ich selbst den tocode angeb'. Wenns aber sowas als Anweisung in utf-8 strings gaebe, das zu machen, wenn dieser String nach ISO-Gedoens gewandelt werden wuerde... Gruss WK
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.