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

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

ただいまの
回答率

90.32%

  • Java

    14438questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Windows

    1540questions

    Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

  • Kotlin

    426questions

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

Windowsのコマンドプロンプトで文字化け

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 288

kasaburanka

score 133

お世話になります
今Windowsを使ってkotlincで条件分岐の勉強をしております
コマンドプロンプトで文字化けを直したいのですがご指導ください

>>> val score = 50
>>> if (score >= 60) {
if (score >= 60)... println("合格!")
println("濠?")... } else {
}... println("不合格")
println("附?")... }
}附?
>>>


もちろんchcp 65001でutf-8へ変更済です
よろしくお願いいたします

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

直接の解決方法ではありませんが以下の方法でどうでしょうか?

実行したいコードを、拡張子をktsにしたテキストファイルで保存します。
この例ではtest.ktsとしました。このときの文字コードはsjisで結構です。

val score = 50
if (score >= 60) {
  println("合格")
} else {
  println("不合格")
}

次にtest.ktsファイルがあるディレクトリでPowershellを立ち上げ、プロンプトから次のコマンドを入力しtest.ktsファイルを実行します。
コンソールの文字コードを変える必要はありません。

PS> kotlinc -script test.kts
不合格

コードを追加したり条件を変えたい場合はtest.ktsファイルを書き換えて再度コマンドを実行します。
入力コマンドは矢印キーの上(↑)を押せば、直前の入力が表示されるのでいちいちコマンド入力はしなくても大丈夫です。

こちらの方がREPLで実行するより簡単かと思いますがどうでしょうか?

ちなみに私の環境は下記の通りです。

  • Windows 10 Professional
  • PowerShell version 5.1
  • Kotlin version 1.2.51

以上ご確認ください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/24 09:50

    有難うございます。このように条件分岐などの場合はkotlinfaileにして保存してからやった方がわかりやすいということですね。今kotlinスタートブックで勉強していますやり方としてはMacを基本に描かれているようなのでほんとうはMacでやればよいのでしょう。WindowsPowershellは使ったことがなくコマンドプロンプトで試していたけどこちらの方がターミナルに近いのですね。少しづつ勉強していきます。ありがとうございました。

    キャンセル

  • 2018/07/24 14:46

    お世話になります。教えてください
    .ktと.ktsの使い分けが知りたいです
    よろしくお願いいたします

    キャンセル

  • 2018/07/24 21:35

    .ktはkotlinソースファイル、.ktsはkotlin scriptファイルです。
    kotlinでどのようなアプリケーションを作りたいか(機能の複雑さなど)で使い分ければいいと思いますが、一般的にはkotlinソースファイルでアプリケーションを開発することが多いと思います。

    kotlinソースファイルはそのままでは実行できないので、kotlinc(コンパイラー)でコンパイルして実行バイナリファイル(jarファイル)を生成します。
    ソースコードにsyntaxエラーがあればコンパイル時に分かるので開発効率は良いといえます。

    kotlin scriptファイルの場合は、コンパイル不要でscriptファイルだけで実行することができます。scriptファイルはソースファイルでもあり同時に実行ファイルでもあるという意味で扱いやすい(便利)といえます。
    アプリケーションにするほどでもないような小さな機能の場合は、scriptファイルで書く場合が多いと思いますが、いまのところはkotlinよりpythonやrubyなどでscriptを書く事例の方が多いようです。

    それから、もうご存知かもしれませんがkotlinの勉強ではTry Kotlinというサイトが便利という評判です。
    https://try.kotlinlang.org/

    キャンセル

  • 2018/07/25 08:37

    お世話になります。すごくわかりやすいご説明ありがとうございます。
    kotlinソースファイルでjarファイルを生成するやり方は理解できていたのですが区別がつきませんでした。Try Kotlin,eclipseなどは確認して知ってはいましたがまだそこまで到達していません。また一つ学習させていただきました。ありがとうございます。

    キャンセル

  • 2018/07/25 08:37

    お世話になります。すごくわかりやすいご説明ありがとうございます。
    kotlinソースファイルでjarファイルを生成するやり方は理解できていたのですが区別がつきませんでした。Try Kotlin,eclipseなどは確認して知ってはいましたがまだそこまで到達していません。また一つ学習させていただきました。ありがとうございます。

    キャンセル

0

fun main(args: Array<String>) {
    val hello = "こんにちは、Kotlin!"
    println(hello)

    for ((i, s) in args.withIndex())
        println("args[$i] = $s")
}

上記のようなUTF-8で保存されたソースコードをコンパイルして、
Windows 10上のPowerShell上で実行してみました。

$ ./kotlinc hello.kt -include-runtime -d hello.jar
$ ./kotlin hello.jar
こんにちは、Kotlin!
$ chcp 65001
Active code page: 65001
ɂ́AKotlinI

デフォルトのロケール(CP932)だと正常に表示されますが、
コンソールのロケールをchcp 65001でUTF-8に変換すると文字化けします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/22 16:34

    有難うございます。ただ知りたいのは直接コマンドプロンプトでコードを記述してできないのでしょうか?Macのターミナルからでしたらできますよね
    Winだと上記のようにprintln("濠?")...println("附?")... }
    }附?このような表示になります。ktファイルをコンパイルして.jarに置き換えればそうなるのだと思いますが・・・・

    キャンセル

  • 2018/07/22 17:27 編集

    コンパイルして実行しかした事が無いのとKotlin自体が専門外なんで詳しくはわかりませんが、
    chcp 65001 で kotlinc-jvm で対話シェルを実行すると日本語が文字化けをするのはおそらく仕様ですね

    で、 cp932で実行すると「あ」が「ゑ」になったり「わ」になったりと文字コードはあってるけど正しい文字コードよりランダムでいくつかズレたものが表示されてるっぽいです(例外が発生してフリーズすることもある)

    「あ」が「ゑ」になる時に、「唖」を表示しようとすると「茨」が出てくる
    これをShift-JISのコード表で見ると同じ間隔でズレてるみたいです。

    kotlinのバグなのかJavaのバグなのか、Windowsのバグなのかはちょっとわかりません。

    タグがWindowsになってますが、Kotlinタグも付けたらKotlinに詳しい人に見つけてもらいやすくなるかもしれません。

    キャンセル

  • 2018/07/22 22:26

    有難うございます。最近感じているのは残念ながらプログラミングはWinよりMacの方がベターなのか?よく理解できていませんが・・・初心者なのでWindowsのpowershellの使い方をいまいちよく理解しておりません。ありがとうございます

    キャンセル

  • 2018/07/22 22:38

    Windows上でのプログラミングで最初にぶち当たる壁が、コマンドプロンプトの文字コードの扱いなんじゃないかな?と思う位には面倒な問題ですね。
    特にC/C++なんかは

    キャンセル

  • 2018/07/23 09:21

    上記のような簡単なコードも正しく表示されない。何かが足らないのだと思います。直接コードを打ち込んで表示させるには????いろいろ検索していますがまだ見つかりません(Powershell上)
    プログラミングはやはりMacを使用した方がよいのか??REPLはファイルを作らなくても手軽だと思いながらやっていたけどこの壁にぶち当たっています

    キャンセル

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

  • ただいまの回答率 90.32%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Java

    14438questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Windows

    1540questions

    Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

  • Kotlin

    426questions

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