Just my 2 cents: We had a horrible/stupid problem creep up on us with the sign extension in java when working with bytes (which are 2s complement, just like all other primitive number types). Strange things would happen when the value of the byte was greater then 127. In hindsight, it was an elementary problem, but it caught us off guard and we wasted half a day looking in the wrong places. Now we have lots of things like:
byte b=(some 8bit bit pattern); int i=b & 0x00ff; // <--- that is the important thing if you want to treat the bit pattern as unsigned its not nice, but works (except if i have a typo). Maybe someone will learn from our mistakes. Because its *always* easier to learn from other peoples mistakes than getting stuck on your own. Maybe your byte and String problems only occured when the respective ASCII code had a "1" as the MSB (sign bit for 2s complement numbers)? Andreas -----Ursprüngliche Nachricht----- Von: David Delbecq [mailto:[EMAIL PROTECTED] Gesendet: Dienstag, 13. September 2005 09:52 An: Struts Users Mailing List Betreff: Re: Could struts be corrupting my byte[]? Le Lundi 12 Septembre 2005 16:36, Letícia Álvares Barbalho a écrit : > I did what you suggested and changed from byte[] to String, leaving to > conversion to hibernate's level. It did solve the problem, thank you. > > But I'm wondering here... I still got a problem with the charset, don't I? > Well if String is correct in form, you don't have charset problems in the struts part (decoded ok from browser's POST to ActionForm). However, am not sure struts handle automatic conversion from String to byte[]. When your action forms is filled, here is what happens in non-fileupload forms: - Browser send form field in a specific encoding. - Servlet container or commons-fileupload decodes submitted datas and convert them to string parameters - Struts take all submited parameters and uses the beanutils populate() method to fill ActionForm - For each parameter, populate tries to convert the String to the appropriate Setter parameter using converters - In the case of a setXXX(byte[]) signature, the ByteArrayConverter is used. As far as i can see in this converter source, it's purpose is to convert a string like "58,107,24,89" into byte[] {58,107,24,89} which is not what you want i think. Why i suggested you to explicitly specify the charset used in String to byte[] is because you are storing text in blob on your database, that means you must have decided when designed the database, which charset you wanted to use (i assumed utf-8). You must remain consistent in your various byte[]<->String conversion to this blob field. I suggested UTF-8, but maybe some other thing might be more suitable for you. Anyway, once you have decided a charset for your blob, stick with it. -- David Delbecq Royal Meteorological Institute of Belgium - Is there life after /sbin/halt -p? --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]