Kotlin:字符串换行符不是 trim 由 trim() 函数

Kotlin: String newline not trimmed by trim() function

我从 json 文件(阿拉伯语 json 文件以前从 txt 文件解析)中检索了两个字符串。从 json 解析后,我使用 kotlin trim() 函数删除前导和尾随换行符。问题是,其中一个文件 1 被成功修剪,而另一个文件 2 没有被修剪。

我想到了编码,但一直没能搞定。我所知道的是 json 文件很可能是从 utf-8 源代码编码的。所以我用 Kotlin 字符串函数 toByteArray(Charsets.UTF-8).contentToString:

转换这两个文件

file1 始终具有:[32, 10] 作为其字节数组中的最后一个元素(换行符应位于此处)。

file2 总是有:[32, 10, -30, -128, -113] 作为其字节数组中的最后一个元素(换行符应该是).

听起来文件末尾有额外的三个字节字符有问题(我不知道这些减号代表什么)。

这是我获取 json 和创建 JSONOBject 的方法:

val file: String = applicationContext.assets.open("poets/${poetID}.txt").bufferedReader().use {
        it.readText()
}

val json = JSONObject(file)

这里,${poetID}.txt实际上是资产文件夹poets/中的json文件。

我用 Swift 编写了相同的应用程序,没有出现此类问题。

我的问题是:末尾的这些assitional字节是什么?有没有办法检查从 json 文件解析的字符串的编码?或者以编程方式更改编码的方法?

我找到了答案。附加字符代表从右到左标记。它是阿拉伯语中常见的 unicode 字符。