【发布时间】:2018-10-22 10:55:04
【问题描述】:
我想在 Kotlin 中打印一些特殊字符(拉丁语、希腊字母、中文等),但总是得到 ??????? 作为输出:
>> println("Δ")
>> ??????
也试过unicode:
>> println("\u0394")
>> ?
我使用的IDE:IntelliJ IDEA 2018.1.3。
我使用的控制台:Kotlin REPL。
jdk:9.0.4
Kotlin 版本:1.2.31 (JRE 9.0.4+11)
如何打印正确的字符串?
更新(20180512):
我还尝试通过 Homebrew 安装 Kotlin 并在我自己的终端中运行 kotlinc,它按预期工作。它只是在 IntelliJ 的 Kotlin REPL 中不起作用。有什么地方可以解决吗?
更新(20180513):
尝试了以下方法:
- 清除 IntelliJ 缓存;
- 重新安装 IntelliJ;
- 使 IntelliJ 和 Kotlin 保持最新;
- 重启MacOS(10.12.6);
- 将 Java 更新到 10.0.1。
在Kotlin REPL中再次使用println,???改成具体错误:
println("Δ")
Internal error occurred. Please, send report to developers.
exception: java.nio.charset.MalformedInputException: Input length = 1
at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:281)
at kotlin.io.ConsoleKt.tryDecode(Console.kt:198)
at kotlin.io.ConsoleKt.readLine(Console.kt:162)
at kotlin.io.ConsoleKt.readLine(Console.kt:149)
at org.jetbrains.kotlin.cli.jvm.repl.reader.IdeReplCommandReader.readLine(IdeReplCommandReader.kt:22)
at org.jetbrains.kotlin.cli.jvm.repl.ReplFromTerminal.one(ReplFromTerminal.kt:98)
at org.jetbrains.kotlin.cli.jvm.repl.ReplFromTerminal.doRun(ReplFromTerminal.kt:69)
at org.jetbrains.kotlin.cli.jvm.repl.ReplFromTerminal.access$doRun(ReplFromTerminal.kt:38)
at org.jetbrains.kotlin.cli.jvm.repl.ReplFromTerminal$Companion.run(ReplFromTerminal.kt:175)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:105)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:63)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:107)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:51)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:96)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:72)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:38)
at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMainNoExit(CLITool.kt:171)
at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMain(CLITool.kt:162)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler$Companion.main(K2JVMCompiler.kt:329)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.main(K2JVMCompiler.kt)
Internal error occurred. Please, send report to developers.
Process finished with exit code 2
似乎读字符编码与写编码不同。但是我找不到配置 Kotlin REPL 编码的方法。
而且,当我打开 Kotlin REPL 时,我发现 2 个 java 进程正在运行,每次我必须杀死一个才能顺利运行 Kotlin REPL:
image: 2 java processes running
我不确定它们是否相关,所以我附上了图片作为参考。已向 IntelliJ 开发人员报告,但对于大多数人来说,这似乎不是一个常见的错误。
【问题讨论】:
-
将其复制并粘贴到 IntelliI 中,对我来说效果很好。可能是平台问题?
-
尝试将 intellij 设置中的编码更改为 UTF-8
-
@msrd0 我使用 utf-8 作为全局编码以及项目编码,但仍然无法正常工作。另外,我使用了 Kotlin REPL 控制台,因此出现错误时没有创建文件...
标签: intellij-idea kotlin special-characters println