| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 
 | #define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>//pour system()
 
int main(void)
{
char const sczCyrillique[] = "\xE5";
char const sczGrec[] = "\xE5";
UINT const uiCpCyrillique = 1251;
UINT const uiCpGrec = 1253;
 
WCHAR szBufferW[10] = L"";
char szBufferOemCp850[10] = "";
 
//Test avec le caractère cyrillique
MultiByteToWideChar( uiCpCyrillique, 0, sczCyrillique, -1, szBufferW, 10);
printf("Caractere cyrillique %u (0x%02X) en unicode : %u (0x%04X)\n",
 (unsigned char)sczCyrillique[0], (unsigned char)sczCyrillique[0],
 szBufferW[0], szBufferW[0]
 );
 
//Test avec le caractère grec
MultiByteToWideChar( uiCpGrec, 0, sczGrec, -1, szBufferW, 10);
printf("Caractere grec %u (0x%02X) en unicode : %u (0x%04X)\n",
 (unsigned char)sczGrec[0], (unsigned char)sczGrec[0],
 szBufferW[0], szBufferW[0]
 );
 
MessageBoxW(NULL, szBufferW, L"Caract\xE8re grec en unicode",
 MB_OK | MB_ICONINFORMATION);
 
//Test en OEM (Codepage 850, qui ne contient pas le carac. grec)
CharToOemBuffW(szBufferW, szBufferOemCp850, 10);
printf("Caractere unicode %u (0x%04X) converti en OEM (CP-850) : %u (0x%02X)\n",
 szBufferW[0], szBufferW[0],
 (unsigned char)szBufferOemCp850[0], (unsigned char)szBufferOemCp850[0]
 );
printf("Chaine unicode convertie en OEM (CP-850) : %s\n", szBufferOemCp850);
 
//Test UTF-8
	{
	char szBufferUtf8[10] = "";
	size_t tailleChnUtf8;
	size_t i;
 
	WideCharToMultiByte(CP_UTF8, 0, szBufferW, -1,
	 szBufferUtf8, sizeof(szBufferUtf8), NULL, NULL);
 
	//Ca marche a tous les coups,
	//l'UTF-8 garantit qu'aucun octet d'un caratere n'est nul
	tailleChnUtf8 = strlen(szBufferUtf8);
	printf("Caractere grec converti en %u octets UTF-8:\n", tailleChnUtf8);
	for(i = 0 ; i<tailleChnUtf8 ; i++)
	    printf("%02X ", (unsigned char)szBufferUtf8[i]);
	printf("\n");
	}
 
system("pause");
return 0;
} | 
Partager