Получение 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?