Domanda

Così voglio usare SetThreadLocale per impostare un thread CodePage a UTF-8. Fino ad ora, sono stato utilizzando il secondo parametro di macro di conversione di stringhe ATL come "CT2A (szBUF, CP_UTF8)" per fare questo. Ma io voglio essere in grado di impostare la tabella codici filo una volta nel principio con SetThreadLocale () e non hanno mai utilizzare il secondo parametro della macro di conversione di nuovo.

Come posso fare questo? SetThreadLocale non avrà un parametro di pagina di codice come CP_UTF8, solo un LCID. Quali parametri dovrei essere l'alimentazione SetThreadLocale per raggiungere questo ??

Tenete a mente, non ho alcun linguaggio particolare in mente. Le corde che ricevo potrebbero essere giapponese, coreano, inglese Etc. Finora, sto avendo problemi con questo mix di corde quando specificano CP_UTF8 come secondo parametro di una macro di conversione. Si può chiedere "bene, allora perché non solo continuare ad usare il secondo parametro". Risposta, "perché può essere facilmente dimenticato dai membri del team che lavorano sul codice. Sarebbe bello se sarebbe solo funzionare correttamente utilizzando la versione parametro predefinito 1 della macro di conversione".

È stato utile?

Soluzione

SetThreadLocale aspetta un identificativo della lingua, ma UTF-8 non è un identificativo della lingua - è una codifica Unicode. Uno degli scopi della ID terreno è quello di dire al sistema come trattare il testo ANSI nel range 128-255. Dato un linguaggio vero e proprio, la sua pagina di codice verrà utilizzato quando si tratta di questi personaggi. UTF-8, OTOH, è una rappresentazione compressa del testo Unicode. Al fine di creare testo UTF-8, l'input deve essere Unicode. Dato il testo ANSI, basta non sapere come convertire la gamma superiore di caratteri. Questo è il modo in cui fare "manualmente", al fine di convertire ANSI a UTF-8 si deve usare per primo MultiByteToWideChar con una tabella codici specificato, e solo allora si può convertire la stringa Unicode risultante a UTF-8.

Ora, tornando alla tua domanda - vorrei andare in un altro modo. Se gli ulteriori bug tabella codici param che molto, fare una macro che nasconderlo o giù di lì (o ereditare la classe CT2A e avere il secondo parametro fisso).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top