Dave, It's possible that there is a problem here. Inline::Java uses a very simple (and somewhat inefficient) encoding to pass the data between Perl and Java.
Here is the corresponding code: sub encode { my $s = shift ; return join(".", unpack("C*", $s)) ; } and String Decode(String s){ StringTokenizer st = new StringTokenizer(s, ".") ; StringBuffer sb = new StringBuffer() ; while (st.hasMoreTokens()){ String ss = st.nextToken() ; byte b[] = {(byte)Integer.parseInt(ss)} ; sb.append(new String(b)) ; } It breaks up the string byte by byte and reconstructs it on the other side. It's probable that this doesn't work with multibyte characters since it's probably creating a character for each byte. If you have time to check this out and send me a patch that would be great, but I don't have the time currently to investigate this. I have no problem reviewing the encoding completely, I did like this to make sure I could implement the protocol line by line. Maybe only escaping the \n's would have been sufficient. Anyways comments/suggestions are welcome. --------------------- Patrick LeBoutillier Laval, Quebec, Canada ----- Original Message ----- From: "Dave LaMacchia" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Wednesday, June 04, 2003 9:19 PM Subject: Inline::Java and utf8 > > I'm working on some code that uses Inline::Java to parse user input in > order to make calls to a corba interface in front of an oracle > database. > > I found when I fetch utf8 data from the database, all is well > (assuming I've set my locale -- this is on Solaris 2.8 -- to > en_US.UTF-8). When I go the other way, however, passing data from > perl to Java via Inline, I get data corruption in the non-ASCII > characters. > > I thought that I might have to convert the strings to UCS2, since > that's what Java uses internally, but this results in java errors due > to embedded null characters. > > Has anyone run into this problem before? Any suggestions how to get > around it? I'm using perl 5.8 so I shouldn't have to insert a use > utf8 pragma. Note also that I've confirmed the data is correct in the > perl code before the embedded Java is called. > > Thanks! > > --dave >