2013-05-08 6 views
5

मैं एक डेवलपर हूं और मुझे नीचे अपवाद का सामना करना पड़ता है जब कुकी में उमलॉट वर्ण होते हैं (ä, ö, ü), मैंने बिना किसी परिणाम के कई समाधान और कॉन्फ़िगरेशन की कोशिश की।टोमकैट 7 अपवाद जब कुकी में umlaut वर्ण होते हैं

मैं 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) 
+0

देखें http://stackoverflow.com/questions/6108207/definite-guide-to-valid-cookie-values: http://tomcat.apache.org/tomcat-8.0-doc/config/cookie-processor.html

के माध्यम से अपने conf/context.xml में सक्षम करें और http://stackoverflow.com/questions/1969232/allowed-characters-in- कुकीज। एक समाधान यूटीएफ -8 में अपनी स्ट्रिंग को एन्कोड करना है, और स्वीकार्य एएससीआई अक्षरों को प्राप्त करने के लिए बेस 64 का उपयोग करना है। –

उत्तर

0

उपयोग UTF-8 एन्कोडिंग का उपयोग करें।

आप इसे विश्व स्तर पर सेट कर सकते हैं या तो:

java -Dfile.encoding=UTF-8 

या स्थानीय स्तर पर:

System.setProperty("file.encoding", "UTF-8"); 

byte inbytes[] = new byte[1024]; 
FileInputStream fis = new FileInputStream("the.location.of.your.cookie"); 
fis.read(inbytes); 

इसके अलावा, आप कुकीज़ मैन्युअल रूप से संपादित हैं, तो एक को बचाने नहीं है। इसके बजाय UTF-8 बराबर है, जो है

System.out.println("\u00c4"); 



Chars Unicode 
------------------------------ 
Ä, ä \u00c4, \u00e4 
Ö, ö \u00d6, \u00f6 
Ü, ü \u00dc, \u00fc 
ß  \u00df 
2

एक और सवाल आप बिल्ला 8.0.15 (या अधिक) नवीनीकृत करने की आवश्यकता पर एक टिप्पणी के अनुसार का उपयोग करें और आरएफसी 6455 कुकी प्रोसेसर सक्षम करें। यहाँ प्रलेखित:

<Context> 
    <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor" /> 
</Context> 
संबंधित मुद्दे