首页 > 解决方案 > Kotlin:字符串换行符不被修剪()函数修剪

问题描述

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

我已经想到了编码,但从未设法通过它。我所知道的是 json 文件很可能是从 utf-8 源编码的。所以我用 Kotlin String 函数转换了这两个文件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实际上是资产文件夹中的 json 文件poets/

我用 Swift 编写了相同的应用程序,没有这样的问题。

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

标签: androidjsonkotlinencodingnewline

解决方案


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


推荐阅读