View Full Version : [C/C++]fprintf UTF8
Come si capisce dal titolo, voglio semplecemente fare una fprintf su un file.... ma nn voglio scrivere caratteri ascii, ma caratteri UTF8, come si fa ??
Mi sono documentato, e da quello che ho trovato su internet sembra che fare un
fprintf(file,"%s","pippo") ;
scriva su un file dei caratteri che sono indifferenti tra utf8 e ascii ....
ma quando vado ad aprire il file con il mitico gedit mi dice che nn riconosce la codifica..... se faccio un cat da consol ecco che appare pippo....
che mi manca ??
Come si capisce dal titolo, voglio semplecemente fare una fprintf su un file.... ma nn voglio scrivere caratteri ascii, ma caratteri UTF8, come si fa ??
Mi sono documentato, e da quello che ho trovato su internet sembra che fare un
fprintf(file,"%s","pippo") ;
scriva su un file dei caratteri che sono indifferenti tra utf8 e ascii ....
ma quando vado ad aprire il file con il mitico gedit mi dice che nn riconosce la codifica..... se faccio un cat da consol ecco che appare pippo....Facciamo una premessa: un file in ASCII puro è anche un file in UTF-8. UTF-8 è solo un encoding del Unicode. In Unicode i caratteri da U+0000 a U+007F sono esattamente i caratteri ASCII, che in UTF-8 sono codificati con 1 singolo byte in cui il bit più alto a 0.
Purtroppo la questione dei character set/encoding è parecchio complessa, per cui bisogna vedere bene cosa vuoi fare di preciso.
Vuoi scrivere su un file una stringa fissa, precodificata nel sorgente come UTF-8??
Allora fai: fprintf(file,"%s","Oggi \xC3\xA8 Domenica.");
Quello che va a finire sul file è il testo "Oggi è Domenica." codificato in UTF-8.
Ecco un po' di link utili (se non ti annoi prima di averli letti tutti :D ):
http://www-128.ibm.com/developerworks/linux/library/l-linuni.html
http://www.cl.cam.ac.uk/~mgk25/unicode.html
http://evanjones.ca/unicode-in-c.html
http://www.triptico.com/software/unicode.html
Per chiarire sto facendo una piccola libreria di logging...
quindi l'utilizzo e quello che si fa di un logging ;)
comunque io riesco a scrivere su file il problema è che sul mio sistema il file nn viene riconosciuto come UTF8 nonostante i carateri utilizzati sono solo alfanumerici quindi uguali sia per utf8 che per ascii ...
cerco di aprire il file con gedit(ho linux ;)) ma mi dice che nn riesce e capire l'encoding....
dove sbaglio ?
comunque io riesco a scrivere su file il problema è che sul mio sistema il file nn viene riconosciuto come UTF8 nonostante i carateri utilizzati sono solo alfanumerici quindi uguali sia per utf8 che per ascii ...Appunto .... non c'è alcuna differenza se si parla di soli caratteri ASCII.
cerco di aprire il file con gedit(ho linux ;)) ma mi dice che nn riesce e capire l'encoding....Non conosco questo gedit, quindi non ti so dire come funziona. Mi sembra davvero strano questo! Non hai pensato di provare a scrivere qualcosa con gedit, salvare il file e poi andare a vedere (anche in hex) cosa ha scritto? ;)
L'unica cosa che può venirmi in mente è che potrebbe darsi che l'editor abbia bisogno del BOM (byte order mark, leggi<qui> (http://unicode.org/faq/utf_bom.html#BOM)) per stabilire il formato.
Trovato il problema .....
in una parte del mio programmino scrivevo sul file una serie di caratteri ... e nn mi sono accorto che scrivevo anche un finestriga '\0' per questo nn riuscivo a leggerlo ...
quindi risolto ....
grazie per l'aiuto!!!!
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.