kotlin 应用程序主方法参数中的字符串编码不正确

问题描述 投票:0回答:1

我正在使用 kotlin 和 compose 桌面版创建一个小型音乐播放器。

所以碰巧我有一首歌有一些奇怪的编码:“08. ±ªþ³§ (feat. Yonaka).mp3”

compose.desktop {
    application {
        mainClass = "MainKt"

        nativeDistributions {
            val encodedArgument = "08. ±ªþ³§ (feat. Yonaka).mp3"
            args += listOf(encodedArgument)

        }
    }
}

当我收到它时,我得到的主函数参数:“08. ±??³§ (feat. Yonaka).mp3”

fun main(args: Array<String>) = application {
    val arg = args[0] // this gives the value  "08. ±??³§ (feat. Yonaka).mp3"

}

因此找不到文件并且程序因编码问题而崩溃。 我尝试将其重新编码为 UTF-8 和许多其他字符集,但没有一个给出正确的结果。

更新

最终我能够解决它。 在 Windows 上,我必须将“区域设置”>“当前系统区域设置”> 更改为英语(美国)。显然它会影响 cmd 翻译 unicode 字符的方式,因此修复了正在更改的参数。 另外,因为这个参数被保存到一个文件中,然后稍后再次读取,所以我必须使用 ISO_8859_1 的字符集保存它,这样我才能正确读取。

kotlin encoding utf-8 android-jetpack-compose
1个回答
0
投票

最终我能够解决它。在 Windows 上,我必须将“区域设置”>“当前系统区域设置”> 更改为英语(美国)。显然它会影响 cmd 翻译 unicode 字符的方式,因此修复了正在更改的参数。另外,因为这个参数被保存到一个文件中,然后稍后再次读取,所以我必须使用 ISO_8859_1 的字符集保存它,这样我才能正确读取。

© www.soinside.com 2019 - 2024. All rights reserved.