autoRequestEncoding 和 autoResponseEncoding
从 WebSphere® Application Server V5 开始,Web 容器不再自动设置请求和响应编码以及响应内容类型。程序员可以使用 Servlet 2.3 或更新版本规范中有效的方法设置这些值。 如果程序员选择不使用字符编码方法,那么他们可以指定 autoRequestEncoding 和 autoResponseEncoding 扩展,其允许应用程序服务器设置编码值和内容类型。
autoRequestEncoding 和 autoResponseEncoding 扩展的值为 true 或 false。这两个扩展的缺省值为 false。如果 autoRequestEncoding 和 autoResponseEncoding 的值都是 false,那么请求和响应字符编码会设置为“servlet 规范”的缺省值,即 ISO-8859-1。另外,如果为响应将该值设置为 false,那么 Web 容器不能设置响应内容类型。如果客户机在请求头中定义字符编码,或者如果代码包含 setCharacterEncoding(String encoding) 方法,那么可能会有不同的字符编码。
如果 autoRequestEncoding 值设置为 true,客户机没有在请求头中指定字符编码,并且此代码不包含 setCharacterEncoding(String encoding) 方法,那么 Web 容器会尝试为请求参数和数据确定正确的字符编码。
使用组装工具更改 autoRequestEncoding 和 autoResponseEncoding 扩展的缺省值。
Web 容器执行以下列表中的每个步骤,直至找到匹配:
- 在 Content-Type 头中查看字符集 (charset)。
- 尝试使用所定义的属性,将服务器语言环境映射至字符集。
- 如果设置,那么尝试使用 DEFAULT_CLIENT_ENCODING 系统属性。
- 将 ISO-8859-1 字符编码用作缺省。
如果 autoResponseEncoding 值设置为 true,客户机没有在请求头中指定字符编码,并且此代码不包含 setCharacterEncoding(String encoding) 方法,那么 Web 容器执行以下操作:
- 尝试从请求头中的信息确定响应内容类型和字符编码。
- 将 ISO-8859-1 字符编码用作缺省。