スキップしてメイン コンテンツに移動

UTF8からSJISに文字コード変換ライブラリを作りました

HaxeでWindowsのコンソールに出力するさい、SJISでないと文字化けを起こしてしまいます。
というわけで、文字コード変換ライブラリを作ってみました

2016-05-25追記:今はnorikoというライブラリにSJIS、UTF8、JIS、EUCの文字コード変換ライブラリを実装しています。

入手先

https://bitbucket.org/arlez80/charcode

使い方

使いかたは簡単です。ライブラリCompileTimeを使用していますので、haxelib install compiletimeでインストールしてください。
import charconv.UTF8ToSJIS;

 // 使うところで
 UTF8ToSJIS.conv( "アルルたんかわいい" );
Windowsのみで文字コード変換を行う場合は・・・
var s = "コメットかわいい";
var str = if( Sys.systemName( ) == "Windows" ){
  // 変換する
  UTF8ToSJIS.conv( s );
}else {
  // そのまま返す
  s;
};
という風に実行時の環境を見てあげるといいです。
※Nekoでは( コンパイルされた環境 == 実行環境 )ではないので、このように書くのがベターだと思います。

仕組み

  • CompileTimeで文字コード変換用テーブルを埋めんでます
  • テーブルから文字を参照して置換してます
テーブルを差し替えればUTF8から他の文字列へも変換することが出来るはずです。

追記

Haxe/Javaで表示する際は、java.lang.SystemのSystem.out.println( );等を使うと思います。
この際の文字コード変換はいりません。 また、Javaに吐くと埋め込んだ変換用のテーブルが「定数文字列が長い」とJavaコンパイラに怒られてしまいます。
方法として、実行時にFile.getContentで読み込むという方法があります。
他にも、haxe.Resourceを使う手があります。

コメント

このブログの人気の投稿

ぐるんぐるん

今、ぐるんぐるん(仮)という名前のゲームを作っています。
いわゆる、6DoFでの空間上で撃ちあいをするゲームになっています。Godot Engineの練習3作目として作っています。

Godot Engineの練習として以下の機能を実装する予定ではありますが、調べながらなので何時実装になるかはわかりません。

・ネットワーク対戦
・洞窟ステージ
・軽量化(GridMap + Lightをなんとか良い感じで使いたい)

LightはBakeできるハズなんですが、やるとエディタごと落ちるのでちょっと要調査です。

HaxeのSMFライブラリ format-midiを公開しました

HaxeでStandard MIDI File(以下SMF)の読み書きができるライブラリ「format-midi」を公開しました。

https://bitbucket.org/arlez80/format-midi

これでHaxeを用いてSMFの生成/解析ができます。
使い方はHaxelibのformatというライブラリにあわせて作ってありますので、簡単に使うことができると思います。

https://bitbucket.org/arlez80/m2sauna
これはformat-midiを使って作っている、SMFからAudiosaunaというブラウザ上で動くシーケンサー用のファイルに変換するツールです。