[haxe] コマンドプロンプトで文字化けする

haxeで作成したクラスの動作を確認するために、コンソールアプリを作ってテストしています。しかし、Windowsのコマンドプロンプト上でうまく文字が表示されませんでした。解決方法をメモします。
まず、以下のプログラムについて、
2016-04-04 18_54_22-emacs@DUO
これをコマンドプロンプトで実行すると・・・
2016-04-04 18_54_39-C__WINDOWS_system32_cmd.exe
これは、エディタで文字コードUTF-8で書かれた文字列「こんにちは、世界(UTF-8)」が、コマンドプロンプトでShiftJISとして「縺薙s縺ォ縺。縺ッ縲∽ク也阜・・TF-8・・」と表示されています。

■chcpコマンド:表示する文字コードの変更

そこで、chcpコマンドでコマンドプロンプトのコードページをUTF-8にしました。
chcp 65001
選択可能なコードページは以下の通りです。
  • 437      IBM437    
  • 932      shift_jis 
  • 1200     utf-16    
  • 20127    us-ascii  
  • 20932    EUC-JP    
  • 50220    iso-2022-jp
  • 50222    iso-2022-jp
  • 51932    euc-jp    
  • 65001    utf-8   
その結果は、
2016-04-04 19_30_59-C__WINDOWS_system32_cmd.exe
コードページの変更で、解読できるようになりましたが、まだ2つ問題があります。
一つは1文字目が文字化けしていること。
もう一つは、1行の文が3行に渡って表示されていることです。
標準出力のストリームがflushされていないのか、不正な制御文字が認識されているのか、よくわからない現象が起きています。

■UTF-8の変換ライブラリ

いろいろ試したのですが、結局コマンドプロンプトをUTF-8表示にすることはあきらめて、UTF-8文字列を出力直前でShiftJISに機械変換することにしました。
先人の知恵をお借りしました。(あるるんぶろぐ:UTF8からSJISに文字コード変換ライブラリを作りました
2016-04-04 20_03_24-emacs@DUO

charconvライブラリをソースフォルダに加え、print関数に追加しました。
2016-04-04 20_03_42-C__WINDOWS_system32_cmd.exe
charconvライブラリの依存しているcompiletimeライブラリをインストールします。
haxelib install compiletime
そして、compiletimeライブラリを-libオプションで指定してコンパイルしています。(上のコマンドラインの1行目)
やっと、正常に日本語をコンソールで利用できるようになりました。
あるるさん、ありがとうございました★

import sys.FileSystem;
import sys.io.File;
import charconv.UTF8ToSJIS;

class Test
{
    static function print(str:String)
    {
        Sys.println(charconv.UTF8ToSJIS.conv(str));
    }
    static function main()
    {
        var str = "";
        print("Hello, World.");
        print("こんにちは、世界(UTF-8)");
        print("Bye!");
    }
}