diff --git a/src/main/java/ch/dissem/msgpack/types/MPString.java b/src/main/java/ch/dissem/msgpack/types/MPString.java index 9bf6890..a68a475 100644 --- a/src/main/java/ch/dissem/msgpack/types/MPString.java +++ b/src/main/java/ch/dissem/msgpack/types/MPString.java @@ -66,7 +66,8 @@ public class MPString implements MPType, CharSequence { } public void pack(OutputStream out) throws IOException { - int size = value.length(); + byte[] bytes = value.getBytes(encoding); + int size = bytes.length; if (size < 32) { out.write(FIXSTR_PREFIX + size); } else if (size < STR8_LIMIT) { @@ -79,7 +80,7 @@ public class MPString implements MPType, CharSequence { out.write(STR32_PREFIX); out.write(ByteBuffer.allocate(4).putInt(size).array()); } - out.write(value.getBytes(encoding)); + out.write(bytes); } @Override diff --git a/src/test/java/ch/dissem/msgpack/ReaderTest.java b/src/test/java/ch/dissem/msgpack/ReaderTest.java index 5b16358..b69cddb 100644 --- a/src/test/java/ch/dissem/msgpack/ReaderTest.java +++ b/src/test/java/ch/dissem/msgpack/ReaderTest.java @@ -63,7 +63,7 @@ public class ReaderTest { new MPInteger(42), new MPMap<>(new HashMap()), new MPNil(), - new MPString("yay!") // TODO: emoji + new MPString("yay! \uD83E\uDD13") ); ByteArrayOutputStream out = new ByteArrayOutputStream(); array.pack(out);