Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18

Discussione: [c] Charset

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    405

    [c] Charset

    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

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    405
    up

  3. #3
    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.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    405
    quindi praticamente bisogna utilizzare la libreria wchar.h

    e magari settare setlocale() ?

    grazie mille

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    405
    up

  6. #6
    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.

  7. #7
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    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

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    405
    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

    codice:
    setlocale(LC_ALL, "");
    i caratteri accentati fanno sballare tutto infatti se scrivo

    codice:
    àòùòàèè
    mi dice lunghezza ZERO °_°

    Se invece imposto selocale() va tutto bene

    Fatemi sapere come procedere per favore
    grazie a tutti, sempre molto gentili


  9. #9
    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.

  10. #10
    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.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.