Make Java TbinaryProtocol enfore UTF-8
authorMark Slee <mcslee@apache.org>
Sat, 3 Nov 2007 04:48:43 +0000 (04:48 +0000)
committerMark Slee <mcslee@apache.org>
Sat, 3 Nov 2007 04:48:43 +0000 (04:48 +0000)
Summary: Java Strings have to have an encoding, they can't just be binary. The constructor and getBytes() method enforce this, so we are standardizing on UTF-8 to avoid string-mangling.

Reviewed By: dreiss

Test Plan: Code all works the exact same in the normal case, and doesn't mangle characters beyond ASCII or ISO-LATIN-1

git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665321 13f79535-47bb-0310-9956-ffa450edef68

lib/java/src/protocol/TBinaryProtocol.java

index 7dff485..feb05f9 100644 (file)
@@ -153,7 +153,7 @@ public class TBinaryProtocol extends TProtocol {
   }
 
   public void writeString(String str) throws TException {
-    byte[] dat = str.getBytes();
+    byte[] dat = str.getBytes("UTF-8");
     writeI32(dat.length);
     trans_.write(dat, 0, dat.length);
   }
@@ -292,7 +292,7 @@ public class TBinaryProtocol extends TProtocol {
   public String readStringBody(int size) throws TException {
     byte[] buf = new byte[size];
     trans_.readAll(buf, 0, size);
-    return new String(buf);
+    return new String(buf, "UTF-8");
   }
 
   public byte[] readBinary() throws TException {