-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Rainer,
On 1/30/2010 7:56 AM, Rainer Jung wrote: > So I expect you can forward any binary garbage you like, as long as you > make sure the code putting it into the environment variables doesn't > already do any encoding or decoding. This was pretty much just as I expected. > Now: it seems that Tomcat is by default assuming it needs to transform > the binary AJP data stream for request attributes into ISO-8859-1 > decoded Java strings. I'm not 100% sure here, but this is the likely the > most important part of the game. It looks like AprProtocol.java, in prepareRequest, handles request attributes in the SC_A_REQ_ATTRIBUTE case. No encoding/decoding is done there. Instead, it is done by the MessageBytes class, indirectly by the ByteChunk class. The documentation for ByteChunk says: * In a server it is very important to be able to operate on * the original byte[] without converting everything to chars. * Some protocols are ASCII only, and some allow different * non-UNICODE encodings. The encoding is not known beforehand, * and can even change during the execution of the protocol. * ( for example a multipart message may have parts with different * encoding ) * * For HTTP it is not very clear how the encoding of RequestURI * and mime values can be determined, but it is a great advantage * to be able to parse the request without converting to string. Later: /** Default encoding used to convert to strings. It should be UTF8, as most standards seem to converge, but the servlet API requires 8859_1, and this object is used mostly for servlets. */ public static final String DEFAULT_CHARACTER_ENCODING="ISO-8859-1"; If ByteChunk.setEncoding has not been called, this default encoding is used to decode bytes. Unfortunately, setEncoding is not static, so you have to have a reference to the ByteChunk object in order to fix it. Then again, knowing that ISO-8859-1 is being used may make it easier to write a transcoder... new String(myString.getBytes("ISO-8859-1"), "UTF-8") That's ugly and I feel like it's asking for problems, but it might be your only reasonable recourse. - -chris -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAktm694ACgkQ9CaO5/Lv0PDKKwCeIq2PqcF3DNyrqgw7JKh84kYf nFwAoJwBlivosSo4e95nhQTLZoxYs2Be =ePve -----END PGP SIGNATURE----- --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org