当cookie包含变音字符时,Tomcat 7异常

use*_*106 5 java cookies tomcat illegalargumentexception tomcat7

我是开发人员,当Cookie包含变音字符(ä,ö,ü)时,我面临以下例外,我尝试了许多解决方案和配置而没有任何结果.

我使用Tomcat7

任何解决方案请

Feb 21, 2013 6:29:16 AM org.apache.coyote.http11.AbstractHttp11Processor process
SEVERE: Error processing request
java.lang.IllegalArgumentException: Control character in cookie value or attribute.
    at org.apache.tomcat.util.http.CookieSupport.isHttpSeparator(CookieSupport.java:193)
    at org.apache.tomcat.util.http.Cookies.getTokenEndPosition(Cookies.java:488)
    at org.apache.tomcat.util.http.Cookies.processCookieHeader(Cookies.java:291)
    at org.apache.tomcat.util.http.Cookies.processCookies(Cookies.java:168)
    at org.apache.tomcat.util.http.Cookies.getCookieCount(Cookies.java:106)
    at org.apache.catalina.connector.CoyoteAdapter.parseSessionCookiesId(CoyoteAdapter.java:919)
    at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAdapter.java:688)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:402)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1600)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)
Run Code Online (Sandbox Code Playgroud)

Ale*_*tos 0

使用 UTF-8 编码。

\n\n

您可以全局设置它:

\n\n
java -Dfile.encoding=UTF-8\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者本地:

\n\n
System.setProperty("file.encoding", "UTF-8");\n\nbyte inbytes[] = new byte[1024];\nFileInputStream fis = new FileInputStream("the.location.of.your.cookie");\nfis.read(inbytes);\n
Run Code Online (Sandbox Code Playgroud)\n\n

另外,如果您手动编辑 cookie,请勿保存 \xc3\x84。而是使用 UTF-8 等效项,即

\n\n
System.out.println("\\u00c4");\n\n\n\nChars   Unicode\n------------------------------\n\xc3\x84, \xc3\xa4    \\u00c4, \\u00e4\n\xc3\x96, \xc3\xb6    \\u00d6, \\u00f6\n\xc3\x9c, \xc3\xbc    \\u00dc, \\u00fc\n\xc3\x9f       \\u00df\n
Run Code Online (Sandbox Code Playgroud)\n