Получение utf-8 стринга из byteArray kotlin android

Имеется вопрос в котором я указывал ошибку с которой не мог разобраться. По итогу расследования было обнаружено что сервер не может обработать utf-8 который я ему шлю, а шлю я ему вроде как юникод:

open(fp, 'wb').write(form['body'].encode('latin-1'))
UnicodeEncodeError: 'latin-1' codec can't encode character '\ufffd' in position 0: ordinal not in range(256)

Пытаюсь вытащить utf-8 из byteArray таким способом:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        when {
            requestCode == 1 && resultCode == Activity.RESULT_OK -> {
                    val content = data.data?.let { uri -> contentResolver.openInputStream(uri).use { it!!.readBytes()} }
                    val encodedFileString = content!!.toString(StandardCharsets.UTF_8)
            }
        }

}

так же есть такой способ:

private fun readTextFile(uri: Uri): String? {
        var reader: BufferedReader? = null
        val builder = StringBuilder()
        try {
            reader = BufferedReader(InputStreamReader(contentResolver.openInputStream(uri)!!))
            var line: String?
            while (reader.readLine().also { line = it } != null) {
                builder.append(line)
            }
        } catch (e: IOException) {
            e.printStackTrace()
        } finally {
            if (reader != null) {
                try {
                    reader.close()
                } catch (e: IOException) {
                    e.printStackTrace()
                }
            }
        }



        return builder.toString()
    }

соответственно вопрос - как получить нормальный адекватный utf-8 из byteArray?


Ответы (0 шт):