Partager via


Prise en charge d’IDN dans WinINet

À compter de Windows Server 2008 et Windows Vista, la partie hôte de l’URL Unicode est convertie en nom de domaine international (IDN). Des parties distinctes de l’encodage d’URL Unicode peuvent également être modifiées par des configurations définies par l’application. Les versions ANSI de l’API WinINet continuent d’envoyer l’URL sur le réseau tel qu’entré par l’application, mais les versions Unicode WinINet de l’API sont désormais conformes à la norme IDN (RFC3490) pour les encodages d’URL.

Par défaut, lorsqu’une URL est entrée en tant que paramètre Unicode, la partie hôte, pour les connexions proxy et directes, est convertie au format IDN. L’application a la possibilité de désactiver la mise en forme de l’hôte IDN en définissant l’option INTERNET_OPTION_IDN . La conversion d’hôte IDN peut être activée uniquement sur les connexions directes ou proxy à l’aide des indicateurs INTERNET_FLAG_IDN_DIRECT ou INTERNET_FLAG_IDN_PROXY avec INTERNET_OPTION_IDN.

L’exemple de code suivant montre comment désactiver la conversion d’hôte IDN pour les connexions proxy et directes.

DWORD IDN = 0; 
InternetSetOption( hRequest, 
                   INTERNET_OPTION_IDN,
                   &IDN, 
                   sizeof(DWORD) ); 

Si la mise en forme de l’hôte IDN est désactivée, l’application a la possibilité de spécifier la page de codes souhaitée à l’aide de INTERNET_OPTION_CODEPAGE.

L’exemple de code suivant montre comment spécifier la page de codes japonais.

DWORD CP_SHIFT_JIS = 932;  // ANSI/OEM  Japanese, Shift-JIS
InternetSetOption( hRequest, 
                   INTERNET_OPTION_CODEPAGE,
                   &CP_SHIFT_JIS, 
                   Sizeof(DWORD) ); 

La partie du chemin d’accès de l’URL est encodée en UTF8 par défaut, et les segments restants de l’URL, la requête ou le fragment, sont convertis en page de codes système par défaut (CP_ACP).

L’exemple suivant montre comment spécifier la page de codes en langue coréenne pour la partie chemin d’accès de l’URL.

DWORD CP_KOREAN = 949;   // ANSI/OEM Korean 
InternetSetOption( hRequest, 
                   INTERNET_OPTION_CODEPAGE_PATH,
                   &CP_KOREAN, 
                   sizeof(DWORD) );

Le tableau suivant définit les options qui prennent en charge IDN. Pour plus d’informations, consultez la rubrique Indicateurs d’option .

Option Description
INTERNET_OPTION_CODEPAGE Cette option est définie sur la demande, ou le handle de connexion, pour spécifier un schéma d’encodage de page de codes pour la partie hôte de l’URL. Cette option est ignorée si IDN est activé.
INTERNET_OPTION_CODEPAGE_PATH Cette option est définie sur la demande, ou le handle de connexion active le schéma d’encodage spécifié pour la partie chemin d’accès de l’URL. Par défaut, la partie chemin d’accès de l’URL est encodée en UTF8.
INTERNET_OPTION_CODEPAGE_EXTRA La définition de cette option sur la demande ou le handle de connexion active le schéma d’encodage spécifié pour la partie supplémentaire de l’URL. Par défaut, la partie supplémentaire de l’URL est encodée dans la page de codes système par défaut (CP_ACP).
INTERNET_OPTION_IDN Cette option peut être utilisée sur la demande ou le handle de connexion pour activer ou désactiver la conversion de l’hôte IDN. Lorsque l’IDN est désactivé, WinINet utilise la page de codes système par défaut pour encoder la partie hôte ou autorité de l’URL.

 

Notes

WinINet ne prend pas en charge les implémentations de serveur. En outre, il ne doit pas être utilisé à partir d’un service. Pour les implémentations de serveur ou les services, utilisez Microsoft Windows HTTP Services (WinHTTP).