質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

2回答

3287閲覧

Kotlin REPLでマルチバイト文字(日本語)が使えない

bamboostep

総合スコア10

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

1グッド

0クリップ

投稿2019/04/03 17:46

###AndroidStudioのKotlinREPLウィンドウでマルチバイト文字を使えるようにしたいです。

AndroidStudio(Kotlin)で学習しだしたばかりのプログラミング初心者です。
AndroidStudioのKotlinREPLのウィンドウで、基礎的な部分の学習をしているのですが、ソース内にマルチバイト文字(日本語)を使うとエラーが出てしまい、先に進めません。
原因と解決方法をご教示いただけないでしょうか?
どうぞ、よろしくお願いいたします。

発生している問題・エラーメッセージ

//下記のエラーが出てしまいます。 Internal error occurred. Please, send report to developers. Internal error occurred. Please, send report to developers. exception: java.nio.charset.MalformedInputException: Input length = 1 at java.nio.charset.CoderResult.throwException(CoderResult.java:281) at kotlin.io.ConsoleKt.tryDecode(Console.kt:203) at kotlin.io.ConsoleKt.readLine(Console.kt:166) at kotlin.io.ConsoleKt.readLine(Console.kt:153) at org.jetbrains.kotlin.cli.jvm.repl.reader.IdeReplCommandReader.readLine(IdeReplCommandReader.kt:22) at org.jetbrains.kotlin.cli.jvm.repl.ReplFromTerminal.one(ReplFromTerminal.kt:97) at org.jetbrains.kotlin.cli.jvm.repl.ReplFromTerminal.doRun(ReplFromTerminal.kt:71) 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:171) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:104) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:57) at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:96) at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:52) at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:93) at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:71) at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:39) at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMainNoExit(CLITool.kt:204) at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMain(CLITool.kt:196) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler$Companion.main(K2JVMCompiler.kt:348) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.main(K2JVMCompiler.kt)

該当のソースコード

// マルチバイトを使わないで記述したコード fun name() { println("nanako") } name() nanako //nanakoと表示されて正しく動いていますが、 //マルチバイト(日本語)を使うと。。。。 fun name() { println("ななこ") } name() //求める値の”ななこ”と表示されずに、 //上記に記載したエラーが出てしまいます。

試したこと

初心者ゆえ、試したことと言ってもandroidStudioの使い方やREPLのハウツーなど、ネットや書籍で近そうなものを探したのですが、どうにも見つけられませんでした。

補足情報(FW/ツールのバージョンなど)

仕様環境は
AndroidStudio3.3.2を、Win10で動かしています。

keicha_hrs👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kakajika

2019/04/05 09:12

Windows環境がないので手元で試せないのですが、プロジェクトの文字コード設定はUTF-8になっていますか?「Preferences」→「Editor」→「File Encoding」と開いて確認してみてください。
bamboostep

2019/04/05 09:27

ありがとうございます。こちらでかくにんすると、「Preferences」というのが見つけられないのですが、 メニューバーから、「File」→「Setting」→(別ウィンドウ)→「Editor」→「FileEncording」と進んだ中にある 「GlobalEncording」と「ProjectEnording」は、ともにUTF-8になっています。
kakajika

2019/04/05 13:13

うーん、そうするとIDEの設定は無視してJVMのデフォルト設定を見に行ってそうですね。 試しに、REPL上で println(System.getProperty("file.encoding")) を実行すると何が出力されますか?
bamboostep

2019/04/06 04:16

お返事、ありがとうございます。 上記の println(System.getProperty("file.encoding")) をKotlinREPLで実行すると、 MS932 と表示されます。どういう意味でしょうか??
bamboostep

2019/04/07 05:49

なるほど~。 ご丁寧に、ありがとうございます。参考のURLも読ませていただきました。 さすがに、初心者の私にはまだ、敷居が高いようで。不勉強を痛感します。 でも、なんとなく、理解ができて、不安から少し解放されました。ありがとうございます。
guest

回答2

0

このところ、Android Studio上でKotlin REPLの動作が酷く不安定で、何かしらバグを抱えているように思います。そうでなくてもIDE上でREPLを用いるのは結構重たい作業で、REPLのメリットを完全に殺してしまっている感があります。

Android Studio上で作成したクラスなどをREPLから呼び出して試験したいとか、どうしてもIDE上でのREPLでなければならない操作を必須とするなら別ですが、Androidプロジェクトと直接的に結びつかない言語の学習が主であるならば、IntelliJ IDEA Community Editionをインストールして、単体プロジェクトとしてKotlinのプログラムを作成した方が、妙なトラブルに遭遇せずに済むんじゃないかと思います。


いろいろ試してみた。

共通条件
  • Android Studioは3.3.2
  • IntelliJ IDEA Community Editionは2019.1
  • Kotlinプラグインおよびスタンドアロンコンパイラーは1.3.21
Windows
実験環境結果
Android StudioのIDE上でREPLエラー
IntelliJ IDEA Community EditionのIDE上でREPLエラー
コマンドプロンプト上でスタンドアロンコンパイラーによるREPL文字化けを起こす
Linux
実験環境結果
Android StudioのIDE上でREPLエラー正常表示
IntelliJ IDEA Community EditionのIDE上でREPLエラー正常表示
GNOME端末上でスタンドアロンコンパイラーによるREPL正常に表示(下図)

LinuxでREPL

(4/6にLinux版の実験をやり直したところ正常に表示されたため訂正)

投稿2019/04/04 13:03

編集2019/04/06 15:42
keicha_hrs

総合スコア6768

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bamboostep

2019/04/04 14:58

ご回答、ありがとうございます。 やはり、バグですかね。。。 疑ってはいたのですが。。。。。AndroidStudioを再インストールしてみたり、色々と試してはみたのですが。。。 IntelliJ IDEA Community Edition の情報、ありがとうございます! 全く触ったことが無いのですが、せっかくの機会ですから、試してみたいと思います!ありがとうございました!
keicha_hrs

2019/04/06 15:05

あっれー? 4日に試したときには、確かにLinux版でも質問に記していただいたものと全く同じエラーが出力されたのだけど、改めて今日試したらLinuxでは正常にマルチバイト文字の出力ができますね。Windows版では文字コードの問題が関係している可能性が大きそうだけど、4日に起きたのは何だったんだろう?私が錯乱してLinuxのつもりがWindowsで動かしていたとか?そんなアホな・・・(苦笑)
keicha_hrs

2019/04/07 01:14 編集

申し訳ありませんが、どうも私の実験には再現性がなく怪しいところがあるので、あまりあてにしないでください。仮想マシンでWindowsを開いたりいろいろ平行作業をしながらの実験だったので、何か錯誤があったのかもしれません。REPLでうまくいかないのは、kakajikaさんがコメントされている通りREPLを稼働するJVMが扱う文字コードに原因があるという線が濃厚な気がします(それはそれで「バグ臭い」と言えるのかもしれないけど)。 ただ、Kotlinの学習を主とするなら、REPLではなくそれなりの開発環境を構築するべきという点は汲み取っていただけたらと思います。
bamboostep

2019/04/07 05:45

初心者の意味不明な質問にお答えいただき、本当に、ありがたく思ってます。 IntelliJ IDEA は、早速インストールして、試してます。 アンドロイドアプリを作りたいという、目標のもあり、『アンドロイドスタジオの操作にも慣れないなぁ』なんて、思いもありますが、keicha_hrsさんのせっかくのおススメですので、両方とも精通できるように、精進します! 本当にありがとうございます!
keicha_hrs

2019/04/07 06:16 編集

Android StudioはIntelliJ IDEA Community Editionをベースにして開発されているので、操作性はほぼ共通しています。IDEAの操作に慣れておけば、Android Studioにも自然と応用できます。 それから、念のため追記しておきますが、IDEAはUltimateとCommunity Editionの2種類ありますが、前者は有償版、後者は無償版なので注意してください。Kotlinの学習にはCommunity Editionでも十分です。
guest

0

環境が違うのでなんとも言えませんが・・・普通に実行できるようですが?
jetbrains-idea-ce
・・・文字コードの問題か?

投稿2019/04/04 00:31

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bamboostep

2019/04/04 14:58

ご回答、ありがとうございます。 AndroidStuioを再インストールしてみたりもしたのですが、状況は好転せずです。。。 文字コードはsettingでUTF-8であることは確認もしたのですけどね。 cateyeさんの環境では、普通に使えるということは、 keicha_hrsがご指定されているように、バグの可能性が高い感じもします。 ここで、解決に時間をかけるより、勉強中の身としては、バージョンアップでの解決を待って、本来の学習に進みたいと思ったりもしています。 ところで、cateyeさんは、エディタウィンドで作成したktsのファイルをツールウィンドウのkotlinREPLで動かしているようなのですが、これは、どのように操作すればできるものなのでしょうか?? 私は、「初めてのAndroidプログラミング」という本で書かれているように、kotlinREPLを起動してから、直接そこにソースを書き込んで動かしていたのですが、「なんか、違うよなぁ~~~。どうやったら、ktファイルで書いたコードをREPLで動かせばいいんだろう」と思っていたもので。 どうも、お礼というより、違う質問までしてしまってますが。。。 とにかく、ありがとうございました!
bamboostep

2019/04/05 08:41

おぉ!ありがとうございます。 確認しました。そういうことだったのですね。 ありがとうございます!!
bamboostep

2019/04/05 09:09

あと、質問が解決できたわけではなく、相変わらず最初の質問のkotlinREPLに直接コードを記入して動かしたものはエラーが出たままなのですが、 いま、教えていただいた方法で、エディタウィンドで作成した日本語文字(ななこ)を出力するktsファイルを作って、Runさせたところ、エラーは出ませんでした。 解決には至ってませんが、”日本語を使う”という趣旨では、何とかなっています。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問