TCHAR e L

di il
23 risposte

23 Risposte - Pagina 2

  • Re: TCHAR e L

    Stampa correttamente ma non cambia la tabella con chcp , cosa che inizialmente non mi interessava , ma che mi pare strana adesso...
    Comunque non capisco perchè usare L'carattere' e L"stringa" non funzioni...se cambio il charset di codeblocks ovviamente non va , non è UNICODE. Se metto qualsiasi UNICODE mi da error: converting to execution character set: Invalid argument.
    IO l'unica cosa che mi piacerebbe capire e perchè non posso usare la forma che usa su msdn su code::blocks
  • Re: TCHAR e L

    Non capisco il problema ... la console usa una code page OEM e quindi ti basta usare quella funzione.
  • Re: TCHAR e L

    Il problema e che io non posso usare L' ' o L" " e non so perchè , a prescindere che esistano altri modi per ottenere lo stesso risultato.La stampa non è il problema
    Qui parte da questo e quindi non so come andare avanti poi ...
  • Re: TCHAR e L

    Continuo a non capire ...

    Tieni ben presente che se l'output è in una "finestra" avrai un certo comportamento mentre se usi una "console" ne avrai un altro.
  • Re: TCHAR e L

    oregon ha scritto:


    Continuo a non capire ...

    Tieni ben presente che se l'output è in una "finestra" avrai un certo comportamento mentre se usi una "console" ne avrai un altro.
    Non posso inizializzare...
    
    #include <windows.h>
    
    int main()
    {
    wchar_t a = L'è';
    wchar_t str[] = L"éèéè";
    return 0;
    }
    
    
    5 |error: converting to execution character set: Invalid argument|
    6 |error: converting to execution character set: Illegal byte sequence|
    
  • Re: TCHAR e L

    http://www.mingw.org/wiki/wide_character
  • Re: TCHAR e L

    Ah ecco quindi mi arrendo... devo scaricare visual studio...
  • Re: TCHAR e L

    Riassunto:

    TCHAR e' una macro!
    _tmain. e' una macro

    che puo' usare char o wchar_t a seconda delle opzioni di compilazione!

    L"abc": e' una stringa di wchar_t

    wout: e' l'output stream in wchar_t
    out: e' l'output stream per char

    wmain: e' il main in wchat_t
    main: e' il main in char.

    Se si mescolano macro, opzioni di compilazione, char e wchar_t senza controllo, si ottengono i risultati indicati.

    Per non parlare della giungla tra codepage, encoding, ascii, unicode, utf8, utf16, utf32, windows-1252, little endian,, big endian...

    Per iniziare conviene scegliere dall'inizio se lavorare con i caratteri a 8bit (char, ed anche qui' c'e' da vedere se il char e' signed o unsigned, meglio unsigned) e con quale codepage o a 16bit (wchar_t) e quale encoding utilizzare per la serializzazione delle stringhe. Per non sapere leggere ne scrivere, meglio che sia l'UTF8.

    E mantenere queste impostazioni durante tutto lo sviluppo.

    Se poi uno vuole proprio farsi del male...
    Usare char, stringhe in wchar_t, caratteri >127 (le accentate, i simboli monetari, ... ) senza conoscere esattamente il codepage e le opportune conversioni e' fonte di rogne indicibili.

    Mantenere la coerenza tra i vari encoding non si risolve con un post.


    A si, poi c'e' un'altra rogna: serve sapere esattamente quale encoding viene utilizzato per salvare il sorgente su disco da parte dell'ide.

    E bisogna stare attenti quando si apre il file con un'altro editor: deve leggere e salvare il file con lo stesso encoding!

    Quello che succede e' che si pasticcia tra utf8 e windows-1252.

    Il risultato e' che e caratteri > 128
    si vedono corretti in un caso, ma sbagliati in un'altro.

    E per concludere, l'encoding e' la fonte principale di attrito tra chi sviluppa per il web: chissa' perche' nel 50% dei siti italiani le accentate si vedono male (cioe' sono dei caratteri strani)
  • Re: TCHAR e L

    migliorabile ha scritto:


    TCHAR e' una macro!
    E fino a qui nessun dubbio

    migliorabile ha scritto:


    wmain: e' il main in wchat_t
    Questo non lo sapevo , buono a sapersi

    migliorabile ha scritto:


    Se si mescolano macro, opzioni di compilazione, char e wchar_t senza controllo, si ottengono i risultati indicati.

    Per non parlare della giungla tra codepage, encoding, ascii, unicode, utf8, utf16, utf32, windows-1252, little endian,, big endian...
    Quello che stavo cercando di fare era proprio di usare la stessa codifica , ma questo non è stato possibile... Win usa una codifica ,la console ne usa un altra,e se si prova a cambiare tabella viene ignorato il comando( no che questa mi interessi veramente ), codeblock come editor le supporta tutte ma il compilatore ne può accettare solo alcune , proprio quella che non va è la UTF-16LE che usa win... cercherò un altro compilatore o userò quello di microsoft

    Anche se alla fine, tutto sommato, non è così fondamentale...
Devi accedere o registrarti per scrivere nel forum
23 risposte