Тип несоответствия: выведенный тип – String? но String ожидалось в kotlin

У меня есть следующий код в моей основной деятельности:

var qNa_list = parseQuestions(loadJSONFromAsset("qna_list.json")) fun loadJSONFromAsset(file_name:String): String? { var json: String? = null try { val isis = assets.open(file_name) val size = isis.available() val buffer = ByteArray(size) isis.read(buffer) isis.close() json = String(buffer, "UTF-8") } catch (ex: IOException) { ex.printStackTrace() return null } return json } 

Когда я пытаюсь скомпилировать его, я получаю следующую ошибку.

Я исправил некоторые другие ошибки, вызванные нулевыми значениями, но это то, что я не могу декодировать.

Ошибка: (127, 35) Несоответствие типов: выводимый тип – String, но Charset ожидался

Я изменил некоторые значения на nullable для размещения ошибок, но json = String(buffer, "UTF-8") (UTF-8) всегда подчеркивается красным цветом.

Согласно javadoc, String contructor принимает второй аргумент типа Charset как показано здесь . Вы можете использовать статический метод Charset.forName(String) для создания вашей Charset .

Кажется, это решило проблему.

Кажется, мне нужно указать объект типа Charset а не строку, такую ​​как UTF-8 .

1-й метод, упомянутый @ Maroš Šeleng

 Charset.forName("UTF-8") 

Или укажите Charset.UTF_8

 val charset: Charset = Charsets.UTF_8 json = String(buffer, charset)