diff --git a/msgpack-jackson/src/main/java/org/msgpack/jackson/dataformat/MessagePackParser.java b/msgpack-jackson/src/main/java/org/msgpack/jackson/dataformat/MessagePackParser.java index 72aeed20..6d7b7c8e 100644 --- a/msgpack-jackson/src/main/java/org/msgpack/jackson/dataformat/MessagePackParser.java +++ b/msgpack-jackson/src/main/java/org/msgpack/jackson/dataformat/MessagePackParser.java @@ -174,7 +174,7 @@ private String unpackString(MessageUnpacker messageUnpacker) throws IOException return new String(tempChars, 0, strLen); } else { - return new String(tempBytes, 0, strLen); + return new String(tempBytes, 0, strLen, StandardCharsets.UTF_8); } } else { diff --git a/msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/MessagePackDataformatForPojoTest.java b/msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/MessagePackDataformatForPojoTest.java index e899e4f4..96e98d04 100644 --- a/msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/MessagePackDataformatForPojoTest.java +++ b/msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/MessagePackDataformatForPojoTest.java @@ -94,6 +94,16 @@ public void testStrings() assertEquals(stringPojo.longMultiByte, value.longMultiByte); } + @Test + public void testUnicodeStringRoundTrip() + throws IOException + { + String original = "çÇğĞıİöÖşŞüÜ"; + byte[] bytes = objectMapper.writeValueAsBytes(original); + String value = objectMapper.readValue(bytes, String.class); + assertEquals(original, value); + } + @Test public void testUsingCustomConstructor() throws IOException