我的主要活动中有以下代码:
body:after
当我尝试编译它时,我收到以下错误。
我修正了由于nullables引起的其他一些错误,但这个是我无法解码的。
错误:(127,35)类型不匹配:推断类型为String但预期是Charset
我已将一些值更改为可为空以容纳错误,但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
}
(UTF-8)始终以红色加下划线。
答案 0 :(得分:17)
这似乎解决了这个问题。
似乎我需要指定Charset
类型对象,而不是像UTF-8
这样的字符串。
@MarošŠeleng提到的第一种方法
Charset.forName("UTF-8")
或者,指定Charset.UTF_8
val charset: Charset = Charsets.UTF_8
json = String(buffer, charset)
答案 1 :(得分:2)
根据javadoc,String
contructor接受Charset
as seen here类型的第二个参数。您可以使用Charset.forName(String)
静态方法创建Charset
。