Котлин печатает специальные символы - PullRequest
0 голосов
/ 12 мая 2018

Я хочу напечатать некоторые специальные символы (латинский, греческий алфавит, китайский и т. Д.) В 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):

Я также пытался установить Kotlin черезДоморощенный и запустить kotlinc в моем собственном терминале, все работает как положено.Это просто не работает в Kotlin REPL от IntelliJ.В любое место, куда я могу пойти, чтобы это исправить?


Обновление (20180513):

Попробовал следующее:

  1. Очистить кэш IntelliJ;
  2. Переустановил IntelliJ;
  3. Обновите IntelliJ и Kotlin;
  4. Перезапустите MacOS (10.12.6);
  5. Обновите Java до 10.0.1.

Используется println в Kotlin REPL снова, ??? изменен на конкретную ошибку:

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.

Кроме того, я обнаружил 2 java-процесса, работающих при открытии Kotlin REPL, и каждый раз, когда мне нужно убить один, чтобы без проблем запустить Kotlin REPL :

image: 2 запущенных java-процесса

Я не уверен, связаны ли они, поэтому я прикрепил изображение в качестве ссылки.Разработчики IntelliJ уже сообщили об этом, но для большинства людей эта ошибка, по-видимому, не распространена.

1 Ответ

0 голосов
/ 12 мая 2018

Попробуйте запустить println("\u0394"). Если это работает, ваш файл, вероятно, не в кодировке UTF-8. Если этого не произойдет, проблема с вашим терминалом.

...