I'm trying to encode a java string into utf-8 for encapsulation within an OtpErlangBinary (http://erlang.org/doc/apps/jinterface/java/com/ericsson/otp/erlang/OtpErlangBinary.html). When I try to construct an OtpErlangBinary from the results of String.getBytes(encoding), I get bad data. A string (pure ascii) with 20 characters becomes a 47-byte OtpErlangBinary, and none of the bytes in that binary seem to correspond to the bytes of the string. The simple function that I have looks like this:
(defmethod to-otp String [ s ] (new OtpErlangBinary (.getBytes s "utf-8"))) And the OtpErlangBinary gets 47 bytes of data for a 20 byte string. However, if I change that code to read: (defmethod to-otp String [ s ] (new OtpErlangBinary (.getBytes (str s) "utf-8"))) (notice the (str s)), the code works. It seems really strange to me that this should happen, but I don't know clojure well enough to determine what's going on under the hood. Is there some way to dump the java code equivalent of those two functions, so I can compare them? I've tried making a minimal test case for converting strings into OtpErlangBinaries, but I can't get this bug to manifest in any circumstances other than this one program. Any tips for debugging would be much appreciated. I'm running clojure 1.0.0, with java 1.6.0, and erlang jinterface 1.4. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---