在 Kotlin 中将字符串编码为 UTF-8

por*_*der 12 java encoding character-encoding kotlin

通常在处理 json 和响应时,您希望在 java 中将 String 编码为 UTF-8。

String response = new String(response.data, UTF); // java code
Run Code Online (Sandbox Code Playgroud)

对于 Kotlin,这是如何做到的?我转换了我的 Java 类,结果是

String response = String(response.data, UTF) // kotlin code
Run Code Online (Sandbox Code Playgroud)

但这会导致错误,因为我相信 Kotlin String() 方法与我在 Java 中所做的不同。它像使用 toString() 一样简单吗?

String response = response.data.toString() // kotlin code
Run Code Online (Sandbox Code Playgroud)

系统如何知道使用 UTF-8,或者这只是默认值?这只是假设,但是如果我想对 String 对象做一些事情并因此使用 UTF-16 呢?如何更改编码?

Sag*_*nga 17

你可以试试这个 String(data, Charsets.UTF_8)

参考:https : //kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/to-string.html


Gop*_* Cg 8

使用 kotlin 函数作为

charset("UTF-8")
Run Code Online (Sandbox Code Playgroud)

使用您的数据

 String(response.data, charset("UTF-8"))
Run Code Online (Sandbox Code Playgroud)


Lou*_*man 6

科特林具有一个过载ByteArray.toString接受Charset。您需要做的就是使用它:array.toString(charset).

我在文档中找不到指定ByteArray.toString()做正确事情的部分,因为它在 Java中没有,并且该行为可能在 Kotlin 中保留。我猜它做错了。我建议toString(charset)明确使用。