Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在不使用OkHttp own'的情况下将响应体从byteArray转换为字符串;s字符串方法,并且不丢失信息?_Android_Kotlin_Okhttp - Fatal编程技术网

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()
  • 稍后检索结果
  • 转换为字符串
问题是:将OkHttp结果从byteArray转换为字符串时,特殊字符(如“é”、“ã”、“ú”)被替换为�. 如果我只使用response.body.string()的话,一切都很好,但我不知道发生了什么。即使向google.com.br(或任何其他地区)发出请求,也会切换此问题,而且他们肯定使用UTF-8

我尝试了
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()
返回了正确的字符串,那么您导入的代码就错了。