Ciao a tutti,
Come faccio ad utilizzare un determinato charset quando apro un file?
Ammettiamo di aver scritto in utf8 del testo su un file txt, per non visualizzare caratteri strani, c'è un modo per impostare un determinato charset?
grazie
Ciao a tutti,
Come faccio ad utilizzare un determinato charset quando apro un file?
Ammettiamo di aver scritto in utf8 del testo su un file txt, per non visualizzare caratteri strani, c'è un modo per impostare un determinato charset?
grazie
up
Per leggere file in Unicode devi usare le versioni Unicode delle funzioni per la gestione dei file (ad esempio la fgetws invece della fgets).
Amaro C++, il gusto pieno dell'undefined behavior.
quindi praticamente bisogna utilizzare la libreria wchar.h
e magari settare setlocale() ?
grazie mille
up
Non mi pare che serva wchar.h (può dipendere da che compilatore stai usando), mentre l'uso di setlocale è inutile in quest'ambito.
Amaro C++, il gusto pieno dell'undefined behavior.
Non devi includere niente, tutte le funzioni hanno una versione A e una W, che corrispondono ai tuoi bisogni.
"Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)
"Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)
http://xvincentx.netsons.org/programBlog
Per XWolverineX:
oddio, scusami ma non capisco...
guarda qui: http://www.hmug.org/man/3/wscanf.php
wscanf fa parte di wchar.h, quindi bisogna per forza includere questa libreria...
Per MItaly:
ma se un utente da shell ha impostato una codifica differente da quella che si aspetta il programma, alla fine i caratteri non saranno gestiti bene....ad esempio, ho fatto un piccolo programmino che data una stringa (letta con wscanf), mi visualizzi il numero dei caratteri.....ecco, se NON imposto
i caratteri accentati fanno sballare tutto infatti se scrivocodice:setlocale(LC_ALL, "");
mi dice lunghezza ZERO °_°codice:àòùòàèè
Se invece imposto selocale() va tutto bene
Fatemi sapere come procedere per favore
grazie a tutti, sempre molto gentili
![]()
Se lavori con caratteri Unicode devi usare le funzioni Unicode; per ottenere la lunghezza di una stringa Unicode, ad esempio, devi usare la funzione wcslen.
Amaro C++, il gusto pieno dell'undefined behavior.
Fai confusione wchar.h non è una libreria, ma un'header.
Di solito tutte le funzioni wchar si trovano nella libreria standard, per cui includere wchar.h ti serve solo al compilatore per poter accedere ai prototipi delle funzioni.
![]()