You can specify the encoding of an HTML page in the Content-Type
HTTP header in a JavaServer Pages (JSP) file using the contentType
page directive. For example:
<%@ page contentType="text/html; charset=utf-8" %>
This is the MIME
type and character encoding that the JSP file uses for the response it sends to the client. You can use any MIME
type or IANA character set name that is valid for the JSP container. The default MIME
type is text/html
, and the default character set is ISO-8859-1. In the above example, the character set is set to UTF-8. The character set of the contentType
page directive directs the JSP engine to encode the dynamic HTML page and set the HTTP Content-Type
header with the specified character set.
For Java Servlets, you can call the setContentType
method of the Servlet API to specify a page encoding in the HTTP header. The doGet
function in Example 9-6 shows how you can call this method.
You should call the setContentType
method before the getWriter
method because the getWriter
method initializes an output stream writer that uses the character set specified by the setContentType
method call. Any HTML content written to the writer and eventually to a browser is encoded in the encoding specified by the setContentType
call.
Example 9-6 Specifying Page Encoding in Servlets Using setContentType
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // generate the MIME type and character set header response.setContentType("text/html; charset=utf-8"); ... // generate the HTML page Printwriter out = response.getWriter(); out.println("<HTML>"); ... out.println("</HTML>"); }