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