diff --git a/akka-http-marshallers-scala/akka-http-spray-json/src/main/scala/akka/http/scaladsl/marshallers/sprayjson/SprayJsonSupport.scala b/akka-http-marshallers-scala/akka-http-spray-json/src/main/scala/akka/http/scaladsl/marshallers/sprayjson/SprayJsonSupport.scala index 57ac42d3e8..6d10f5f8ab 100644 --- a/akka-http-marshallers-scala/akka-http-spray-json/src/main/scala/akka/http/scaladsl/marshallers/sprayjson/SprayJsonSupport.scala +++ b/akka-http-marshallers-scala/akka-http-spray-json/src/main/scala/akka/http/scaladsl/marshallers/sprayjson/SprayJsonSupport.scala @@ -23,7 +23,7 @@ trait SprayJsonSupport { implicit def sprayJsValueUnmarshaller: FromEntityUnmarshaller[JsValue] = Unmarshaller.byteStringUnmarshaller.forContentTypes(`application/json`).mapWithCharset { (data, charset) ⇒ val input = - if (charset == HttpCharsets.`UTF-8`) ParserInput(data.toArray) + if (charset == HttpCharsets.`UTF-8`) ParserInput(data.utf8String) else ParserInput(data.decodeString(charset.nioCharset.name)) // FIXME: identify charset by instance, not by name! JsonParser(input) } diff --git a/akka-http-tests/src/test/scala/akka/http/scaladsl/marshallers/JsonSupportSpec.scala b/akka-http-tests/src/test/scala/akka/http/scaladsl/marshallers/JsonSupportSpec.scala index fef3487c72..0edf33dd3b 100644 --- a/akka-http-tests/src/test/scala/akka/http/scaladsl/marshallers/JsonSupportSpec.scala +++ b/akka-http-tests/src/test/scala/akka/http/scaladsl/marshallers/JsonSupportSpec.scala @@ -19,11 +19,11 @@ object Employee { val simple = Employee("Frank", "Smith", 42, 12345, false) val json = """{"fname":"Frank","name":"Smith","age":42,"id":12345,"boardMember":false}""" - val utf8 = Employee("Fränk", "Smi√", 42, 12345, false) + val utf8 = Employee("Fränk", "Çmi√", 42, 12345, false) val utf8json = """{ | "fname": "Fränk", - | "name": "Smi√", + | "name": "Çmi√", | "age": 42, | "id": 12345, | "boardMember": false