読者です 読者をやめる 読者になる 読者になる

未踏作業日誌――余計なもの作るよ!

未踏の作業日誌的なものを書きましょうということで書くことにしました.余計なことばっかりしています.

UTF-8とSJISの相互変換ライブラリを作りました

とりあえずUnityでVMDファイルを出力できるようになったところまではよかったのですが,文字コード周りで引っかかってしまいました.

どうやらUnity WebPlayerはEncoding周りが物凄く弱いらしく,Encoding.GetEncoding(932)をしようとすると例外が発生して処理が落ちるようになってしまいました.この問題は他の言語圏(文字エンコード)でも起こっているらしく,CodePageを指定すると落ちてしまうみたいです.

どうやら,Unityでビルドした環境によって使えない文字エンコードがあるみたいです.

PSS SDKでSJIS(Shift-JIS)などは使えない - 強火で進め

 

このままだとWebPlayerからVMDファイルを生成できなくなってしまうため,UTF-8SJISをbyte型配列でやりとりするためのライブラリを作りました.

GRGSIBERIA/utf8-sjis-encoder · GitHub

 

適当な文字でテストしてみたところ,相互変換はうまく行ってるみたいです.これでWebPlayerでSJISが扱えるようになるので,通信先がSJISしか使えないとか,SJISのフォーマットしか対応していない何かを使っているとか,そんな感じの限定された環境で凄く幸せになれると思います.

Monoが原因なのか,Unityが原因なのかはわかりませんが,どの国でも困ってる人がいるみたいなのできちんとCodePageを指定していろんな言語で動く状態になることを祈ります.