Android 如何在不使用OkHttp own'的情况下将响应体从byteArray转换为字符串;s字符串方法,并且不丢失信息?
我的情况如下:Android 如何在不使用OkHttp own'的情况下将响应体从byteArray转换为字符串;s字符串方法,并且不丢失信息?,android,kotlin,okhttp,Android,Kotlin,Okhttp,我的情况如下: OkHttp调用 将以下结果存储在db中:response.body.bytes() 稍后检索结果 转换为字符串 问题是:将OkHttp结果从byteArray转换为字符串时,特殊字符(如“é”、“ã”、“ú”)被替换为�. 如果我只使用response.body.string()的话,一切都很好,但我不知道发生了什么。即使向google.com.br(或任何其他地区)发出请求,也会切换此问题,而且他们肯定使用UTF-8 我尝试了String(byteArray,charse
- OkHttp调用
- 将以下结果存储在db中:response.body.bytes()
- 稍后检索结果
- 转换为字符串
String(byteArray,charset=UTF-8)
和许多类似的方法。到目前为止,一切都没起作用
所以我想知道,如何在不丢失特殊字符的情况下将okHttp byteArray结果转换为字符串
编辑:这个简单的代码已经触发了我的问题:
val client=OkHttpClient()
val request=request.Builder()
.url(“”)
.build()
val response=client.newCall(request.execute())
val bytes=response.body()!!。字节()
println(字符串(字节))
为什么不使用OkHttp转换为字符串,然后存储在DB中?同时显示您的代码。编辑:更新的问题。//没有什么特别的,真的。只是这个println(字符串(response.body()!!.bytes())已经切换了这个问题。如果没有解决方案,我可能会这样做,但是如果我使用OkHttp神秘字符串函数进行转换,我需要检查它是否不是文件或其他任何东西,这样它就不会损坏图像。您需要检查内容类型编码。来自OKHttp JavaDoc:响应作为字符串,使用内容类型头的字符集进行解码。如果该标头不存在或缺少字符集,则将尝试根据其BOM或UTF-8对响应体进行解码。我确实尝试过这样做。我甚至导入了OkHttp代码来处理我自己的代码,但是,由于Google是UTF-8,并且大多数Android与字符串相关的方法都是UTF-8,包括String(),为了使示例更简短,我删除了它。但是如果OkHttp的
String()
返回了正确的字符串,那么您导入的代码就错了。