autoRequestEncoding et autoResponseEncoding
Dès la version 5 de WebSphere Application Server, le conteneur web ne définit plus automatiquement les encodages des demandes et des réponses ou les types de contenu des réponses. Les programmeurs doivent définir ces valeurs à l'aide des méthodes mises à disposition par la spécification de servlet 2.3 ou ultérieure. S'ils choisissent de ne pas employer les méthodes d'encodage de caractères, ils peuvent indiquer les extensions autoRequestEncoding et autoResponseEncoding qui permettent au serveur d'applications de définir les valeurs d'encodage et le type de contenu.
Les valeurs des extensions autoRequestEncoding et autoResponseEncoding sont true ou false. La valeur par défaut des deux extensions est false. Si la valeur est false pour autoRequestEncoding et autoResponseEncoding, l'encodage de caractères pour les demandes et les réponses est ISO-8859-1, c'est-à-dire la spécification de servlet par défaut. De plus, si la valeur est false pour une réponse, le conteneur web ne peut pas définir le type de contenu de cette dernière. Il est possible d'utiliser des encodages de caractères différents si l'encodage de caractères est défini dans l'en-tête de demande sur le client ou si le code indique la méthode setCharacterEncoding(String encodage).
Si la valeur de autoRequestEncoding est true, alors que le client n'indique pas d'encodage de caractères dans l'en-tête de la demande et que le code ne comporte pas d'instruction d'appel setCharacterEncoding(String encodage), le conteneur web tentera d'identifier l'encodage approprié pour les paramètres et les données de la demande.
Utilisez un outil d'assemblage pour changer les valeurs par défaut des extensions autoRequestEncoding et autoResponseEncoding.
Jusqu'à ce qu'il trouve une correspondance, le conteneur web :
- examine le jeu de caractères (charset) dans l'en-tête Content-Type,
- tente de mapper la valeur locale d'environnement des serveurs à un jeu de caractères, à l'aide d'un jeu de caractères,
- tente d'utiliser la propriété système DEFAULT_CLIENT_ENCODING (si elle est définie) et
- utilise l'encodage ISO-8859-1 par défaut.
Si la valeur de autoResponseEncoding est true, alors que le client n'indique pas d'encodage de caractères dans l'en-tête de la demande et que le code ne comporte pas d'instruction d'appel setCharacterEncoding(String encoding), le conteneur web :
- tente de déterminer le type de contenu de la réponse et l'encodage de caractères à partir des informations de l'en-tête de la demande, et
- utilise l'encodage ISO-8859-1 par défaut.