Condividi tramite


Problemi relativi alle applicazioni console

Le funzioni della console a 8 bit usano la tabella codici OEM. Per impostazione predefinita, tutte le altre funzioni usano la tabella codici ANSI. Ciò significa che le stringhe restituite dalle funzioni della console potrebbero non essere elaborate correttamente dalle altre funzioni e viceversa. Ad esempio, se FindFirstFileA restituisce una stringa contenente determinati caratteri ANSI estesi, WriteConsoleA non visualizzerà correttamente la stringa.

La soluzione migliore a lungo termine per un'applicazione console consiste nell'usare Unicode. La console accetterà la codifica UTF-16 nella variante W delle API o della codifica UTF-8 nella variante A delle API dopo aver usato SetConsoleCP e SetConsoleOutputCP su 65001 (CP_UTF8 costante) per la tabella codici UTF-8.

Barring that solution, un'applicazione console deve usare la funzione SetFileApisToOEM . Tale funzione modifica le funzioni di file pertinenti in modo che producano stringhe di set di caratteri OEM anziché stringhe del set di caratteri ANSI.

Di seguito sono riportate le funzioni di file:

Quando si gestiscono le righe di comando, un'applicazione console deve ottenere la riga di comando in formato Unicode e convertirla in formato OEM, usando le funzioni pertinenti da carattere a OEM. Si noti anche che argv usa il set di caratteri ANSI.