Newsgroup: it.comp.os.linux.development
Titolo: Problema UTF8

Salve, spero sia il ng giusto per la mia richiesta.
Comunque, il mio problema è che ho una serie di file codificati UTF8, si
tratta di file di testo e ho bisogno di un meccanismo per elaborare le
stringhe ivi contenute in linguaggio C/C++.
Ho visto che l'ISO C supporta i wide chars, quindi in pratica per
elaborare stringhe UTF8 dovrei prima convertirle in UCS4 e poi posso usare
le varie funzioni tipo iswalpha, iswdigit e le conversioni di confronto e
casing, giusto?
Inoltre ho visto che anche GTK e QT offrono supporto per le stringhe UTF8,
oltre ovviamente ad ICU.
Vorrei sapere qual'è tra questi quattro la soluzione che supporta meglio
lo standard Unicode. In pratica ho notato che alcune librerie non
implementano tutti gli alfabeti implementati da Unicode, ad altre mancano
dati sui vari locales. ICU sostiene di supportare 230 locales, quindi a
rigor di logica dovrebbe essere il migliore, anche se GTK e QT essendo
usate per applicazioni diffuse come Gnome e KDE dovrebbero avere un ottimo
supporto per i locales e i charsets.

 dovrebbero avere un ottimo supporto per i locales e i charsets.
se scrivi in C++ puoi usare la classe Glib::Ustring delle glibmm 
puoi utilizzarlo grosso modo come se fosse un std:string (è
definito anche un cast verso questa classe)
http://www.gtkmm.org/
-- 
Andrea Corradi | Debian User | 
www.debian.org
Fingerprint: A41E F6B0 DBDB F04C 4940 E411 30F3 CD62 57B1 8458
gpg --keyserver 
keyserver.linux.it
 --recv-key 57B18458
Please avoid sending me Word or PowerPoint attachments.
http://www.gnu.org/philosophy/no-word-attachments.html

 
http://www.gtkmm.org/
M'intrometto perche' interessa anche a me. Esiste un modo indipendente
da GTK o chi altri per fare la stessa cosa?
Nello specifico, io scrivo e mantengo una libreria che usa altre
librerie, e che e' usata da un client con GUI. Le libreri che io uso mi
passano tutte le stringhe encodate in UFT8, ed io piazzo queste stringhe
in array di chars che poi mando sopra al client.
A che livello dovrei preoccuparmi della codifica?
-- 
Salvatore Iovene
http://www.iovene.com/

 stringhe ivi contenute in linguaggio C/C++.
Potresti usare libtcl.so;-)  Oppure potresti usare direttamente Tcl se
ti serve fare qualcosa velocemente.  Anche Python, per quello, con le
stringhe u"..." dovrebbe essere in grado di gestire utf8/unicode.
-- 
David N. Welton
- 
http://www.dedasys.com/davidw/
Linux, Open Source Consulting
- 
http://www.dedasys.com/

 
mi sono scordato che il C++ ha il tipo di dato standard wchar_t
che gestisce le stringhe utf8, si usa come un string.
Ciao


 che gestisce le stringhe utf8, si usa come un string.
State facendo confusione, wchar_t e' di fatto un intero a 32bit e 
facendo stringhe cosifatte si supporta fondalmentalmente solo un unicode 
a 32bit, scarsamente usato. Tutte le funzioni della libc funzionano con 
questo tipo di interi, ma nelle applicazioni tipicamente si preferisce 
usare l'utf8, che non ha un tipo carattere di lunghezza fissa ma ha il 
grosso vantaggio di essere compatibile con l'ascii per quanto riguarda 
il set di caratteri base, inoltre tutti gli algoritmi della libc 
(strcmp, strstr, strcpy... ) funzionano tranquillamente con le utf8 
mentre sono necessarie versioni particolari per le codifiche unicode a 
16 o 32bit.
Per passare tra un mondo e l'altro bisogna usare le funzioni di 
conversione tra stringhe wide (unicode16 o unicode32) e multibyte (ascii 
o utf8) tipo wcstombs()
Bye,
  Gabry

 fondalmentalmente solo un unicode a 32bit, scarsamente usato.
Ah ecco, grazie per il chiarimento!
