Dúvida sobre cookies

Boa noite a todos

Estou com uma dúvida sobre a utilização de cookies.
Tenho meu servlet com o ContentType como “text/html;charset=UTF-8” e estou utilizando cookies na aplicação.
Mas quando adiciono um cookie que tem acento em alguma das letras ocorre o seguinte erro na aplicação:

15/03/2010 23:44:44 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet ServletLogin threw exception
java.lang.IllegalArgumentException: Control character in cookie value, consider BASE64 encoding your value
at org.apache.tomcat.util.http.ServerCookie.maybeQuote2(ServerCookie.java:396)
at org.apache.tomcat.util.http.ServerCookie.maybeQuote2(ServerCookie.java:389)
at org.apache.tomcat.util.http.ServerCookie.appendCookieValue(ServerCookie.java:293)
at org.apache.catalina.connector.Response.addCookieInternal(Response.java:1010)
at org.apache.catalina.connector.Response.addCookieInternal(Response.java:979)
at org.apache.catalina.connector.Response.addCookie(Response.java:967)
at org.apache.catalina.connector.ResponseFacade.addCookie(ResponseFacade.java:343)
at org.netbeans.modules.web.monitor.server.MonitorResponseWrapper.addCookie(MonitorResponseWrapper.java:127)
at br.com.webCurric.servlets.ServletLogin.geraCookieLogin(ServletLogin.java:158)
at br.com.webCurric.servlets.ServletLogin.processRequest(ServletLogin.java:63)
at br.com.webCurric.servlets.ServletLogin.doPost(ServletLogin.java:121)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)

Pelo que pesquisei na internet, o cookie não aceita acento. Isso é correto? Ou posso usar a codificação “ISO” padrão Brasil?

Bom, aqui vai o método que utilizei para adcionar o cookie

public boolean geraCookieLogin(String[] cookieName, String[] cookieValue, int cookieAge, HttpServletResponse response) {

    int countCookies = 0;
    for (String name: cookieName) {
        Cookie cookie = new Cookie(name, cookieValue[countCookies]);
        System.out.println("name: " + name + " cookieValue: " + cookieValue[countCookies]);
        cookie.setMaxAge(cookieAge);
        response.addCookie(cookie);            
        countCookies++;
    }

    return true;

}

[quote=lsavenhago]Boa noite a todos

Estou com uma dúvida sobre a utilização de cookies.
Tenho meu servlet com o ContentType como “text/html;charset=UTF-8” e estou utilizando cookies na aplicação.
Mas quando adiciono um cookie que tem acento em alguma das letras ocorre o seguinte erro na aplicação:
[/quote]

As cookies não suportam UTF-8 apenas ASCII (que é menor)

É boa prática codificar as cookies em Base64 ( que garante que apenas caracteres compativeis com ASCII são usados)
Que é exactamente o que lhe é sugerido na mensagem:

[quote]15/03/2010 23:44:44 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet ServletLogin threw exception
java.lang.IllegalArgumentException: Control character in cookie value, consider BASE64 encoding your value
at org.apache.tomcat.util.http.ServerCookie.maybeQuote2(ServerCookie.java:396)
[/quote]