web-dev-qa-db-fra.com

Encodage et API de servlet: setContentType ou setCharacterEncoding

Il suffit de se demander ce qui se cache derrière la scène. En fait, il semble que nous pouvons définir l'encodage avec:

  • response.setContentType("text/html; charset=UTF-8")
  • response.setCharacterEncoding("UTF-8")

Quelle est la différence?

29
Sebastien Lorber

Le javadoc est assez clair sur la différence:

void setCharacterEncoding(String charset) Définit le codage de caractères (jeu de caractères MIME) de la réponse envoyée au client, par exemple, en UTF-8. Si le codage des caractères a déjà été défini par setContentType(Java.lang.String) ou setLocale(Java.util.Locale), cette méthode le remplace. Appeler setContentType(Java.lang.String) avec la chaîne de text/html Et appeler cette méthode avec la chaîne de UTF-8 équivaut à appeler setContentType avec le Chaîne de text/html; charset=UTF-8.


void setContentType(String type) Définit le type de contenu de la réponse envoyée au client, si la réponse n'a pas encore été validée. Le type de contenu donné peut inclure une spécification de codage de caractères, par exemple, text/html;charset=UTF-8.

33
skaffman