Re: Bug#235759: libc6: iconv's replacement for "German quotes in UTF-8" to latin1
Martin v. Löwis wrote:
> Michael Piefel wrote:
>> Am Dienstag, den 18.10.2005, 12:14 +0100 schrieb Christian Mack:
>>
>>> Ich bin mir nicht sicher wann welche Variante gewählt wird, aber ich
>>> vermute,
>>> die erste immer bei Framebuffersupport, die andere auf Textconsole.
>>
>>
>> Ich kann mir kaum vorstellen, dass in der C-Bibliothek eine
>> Unterscheidung in PC-Textmodus und Framebuffer vorgenommen wird. Das ist
>> die falsche Abstraktionsebene. Und zudem: _Meine_ Textkonsole kann mit
>> Zeichen jenseits von ASCII umgehen.
>
> Das wird anhand der locale entschieden. Wenn iconv oder wcstombs
> versuchen, (wchar_t)0x201C in char[] umzuwandeln, gehen sie wie
> folgt vor:
> 1. wenn es im CODESET (nl_langinfo(CODESET)) der locale eine
> Byterepräsentation für U+201C gibt (etwa weil CODESET UTF-8
> ist), dann wird in dieses umgewandelt.
> 2. wenn das nicht der Fall ist, wird überprüft, ob
> transliteration erlaubt ist. Wenn das nicht erlaubt ist,
> scheitert die Konvertierung.
> 3. ansonsten wird überprüft, ob U+00AB
> (LEFT-POINTING DOUBLE ANGLE QUOTATION MARK) im CODESET vorhanden
> ist. Falls ja, wird das genommen.
> 4. ansonsten wird überprüft, ob U+0022 (QUOTATION MARK) enthalten
> ist, dann wird das genommen. Das sollte eigentlich in jedem
> CODESET enthalten sein.
> 5. ansonsten scheitert die Konvertierung.
>
> Mir ist nicht ganz klar, wie in Schritt 2 entschieden wird, ob
> transliteration erlaubt ist. Bei iconv ist es klar: Wenn
> der Zeichensatz auf //TRANSLIT endet (etwa ISO-8859-1//TRANSLIT),
> dann wird transliteriert. Wie das bei wcstombs ist, ist mir
> nicht klar. In gettext jedenfalls wird der iconv-Codec mit
> //TRANSLIT geöffnet, sodass gettext(3) immer transliteration
> durchführt.
>
> Ciao,
> Martin
Danke Martin für die umfassende Info.
Damit hat Micha teilweise recht.
Sollte dies nicht in die i18n-Doku?
Tschau
Christian
Reply to: