Make Java TbinaryProtocol enfore UTF-8
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
diff --git a/lib/java/src/protocol/TBinaryProtocol.java b/lib/java/src/protocol/TBinaryProtocol.java
index 7dff485..feb05f9 100644
--- a/lib/java/src/protocol/TBinaryProtocol.java
+++ b/lib/java/src/protocol/TBinaryProtocol.java
@@ -153,7 +153,7 @@
}
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 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 {