Je viens juste de commencer à créer des modules natifs pour IIS7. J'utilise l'un des exemples Hello World de http://msdn.microsoft.com/en-us/library/ms689348(v=vs.90).aspx. Exemple de code écrit là fonctionne très bien. Maintenant, j'essaye de changer ce code pour supporter l'encodage UTF-8 à afficher dans le navigateur. J'ai fait les changements suivants:Support UTF-8 dans VC++ pour application web
//1. Changed here to include ;charset=UTF-8 in Http Header Content Type
pHttpResponse->SetHeader(HttpHeaderContentType, "text/plain;charset=UTF-8", (USHORT)strlen("text/plain;charset=UTF-8"), TRUE);
//2. Changed here data type as PCTSTR which is PCWSTR(16-bit) since I have UNICODE defined.
PCTSTR pszBuffer = L"Hello World!";
HTTP_DATA_CHUNK dataChunk;
dataChunk.DataChunkType = HttpDataChunkFromMemory;
DWORD cbSent;
dataChunk.FromMemory.pBuffer = (PVOID)pszBuffer;
//3. Changed here to calculate length using wcslen.
dataChunk.FromMemory.BufferLength = (USHORT)wcslen(pszBuffer);
hr = pHttpResponse->WriteEntityChunks(&dataChunk, 1, FALSE, TRUE, &cbSent);
Mon premier doute est de savoir comment faire chaîne pszBuffer UTF-8? Le deuxième doute est comment calculer la longueur de ceci correctement (code sur le commentaire numéro 3)?
Existe-t-il un autre moyen d'écrire une réponse au lieu de créer un tampon, un chunk, etc.?
Vous pouvez utiliser des bibliothèques pour travailler avec Unicode, comme http://utfcpp.sourceforge.net/ (évitez simplement MBCS!) Vérifiez également MSDN: http://msdn.microsoft.com/en-us/library/ cwe8bzh0.aspx – Dai