android - 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 文件解析的字符串的编码?或者以编程方式更改编码的方法?
解决方案
我找到了答案。附加字符表示从右到左标记。它是阿拉伯语中常见的 unicode 字符。
推荐阅读
- python - 无休止的程序执行
- javascript - 为什么如果点击了 onclick,sweetalert 无法显示
- javascript - 产生方波
- c# - 重命名exe后如何保留用户设置
- c++ - 安装使用 Bazel 构建的库
- google-cloud-platform - 问:我怎样才能得到“glossary_id”
- udp - 使用 netcat 和 UDP 从 Wifi 接收数据数组
- c++ - 如何轻松将字符串转换为键盘字符
- python - 张量流中的 Seq2Seq 训练助手模块
- python - 错误:在 Postgres Docker 容器中找不到 pg_config 可执行文件