Kotlin桌面Compose应用主方法参数字符串编码错误问题
Compose for Desktop传递含特殊编码文件名参数时乱码问题
我用Kotlin和Compose for Desktop开发一款小型音乐播放器,遇到参数乱码问题:有一首文件名带特殊编码的歌曲——08. ±ªþ³§ (feat. Yonaka).mp3。
我的build配置代码如下:
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] // 此处得到值 "08. ±??³§ (feat. Yonaka).mp3" }
这直接导致程序因找不到文件崩溃,我尝试转成UTF-8等多种字符集,都没解决问题。
问题解决更新
最终找到了解决方案:
- 在Windows系统中,需将「区域设置」>「当前系统区域」改为「英语(美国)」,这会改变CMD对Unicode字符的转译方式,修复参数乱码问题。
- 另外,由于该参数需要保存到文件后再次读取,必须使用
ISO_8859_1字符集保存才能正确读取。
内容的提问来源于stack exchange,提问作者Parkinson
相关产品推荐
相关产品推荐

