強火で進め

このブログではプログラム関連の記事を中心に書いてます。

Unityで新規作成ファイルをBOM付きUTF-8にする方法が思いついたけど結局ダメだった話

(2012/08/24 追記)
解決出来ました!!

UnityでC#の新規作成ファイルをBOM付きUTF-8にするコマンド(Mac環境向け) - 強火で進め
http://d.hatena.ne.jp/nakamura001/20120824/1345832011

(追記ここまで)

本日開催されたUnity勉強会の懇親会でUnityでは色々と苦労させらる日本語問題について話が盛り上りました。

今回話に上がったのはMonoDevep。コレ、Unity製のカスタマイズ版のMonoDevepにも関わらずファイル保存時の文字コード(エンコード)の選択がBOM無しのUTF-8しか無かったりします。

因みにBOM無しのUTF-8だと日本語は文字化けします(BOM有りなら大丈夫)。

この話をしている時にふと思いついたのが「そう言えば新規作成されるC#ファイルとかってテンプレート(雛形)ファイルが有ったハズだよな?それに日本語コメント入れてBOM付きUTF-8で保存しておけば良いじゃない?」と言うアイディアでした。

このアイディアを話てみたところ「それなら別にコメント追加しないでもBOM付きUTF-8で保存するだで良いじゃ?」「あっ、そうかBOM付きUTF-8って先頭に2バイトBOM情報が付くので別に日本語コメント付けなくても識別してくれるか!!」などと話が進み、これは行けるかも?と思いつつ懇親会を終わりました。

試してみた

という事で帰宅して早速試してみる事にしました。Macの場合にはC#の雛形ファイルは以下の位置に有ります。

/Applications/Unity/Unity.app/Contents/Resources/ScriptTemplates/81-C\#\ Script-NewBehaviourScript.cs.txt

因みに雛形ファイルがこのパスに成ったのはUnity 3.5.xから。それまでは以下のパスでした。

/Applications/Unity/Unity.app/Contents/Resources/NewBehaviourScript.cs

こちらをBOM付きUTF-8にして保存、Unityを起動してファイルを新規作成。 GUI.TextArea に日本語を表示させてみました。しかし、結果は文字化け。

「おかしいなぁ〜」と思いながらも新規作成されたファイルのエンコードを確認するとBOM無しのUTF-8

何やら生成時にBOM無しに置き換わってしまうみたいです。良いアイディアだと思ったのに残念です。