強火で進め

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

UnityでC#の新規作成ファイルをBOM付きUTF-8にするコマンド(Mac環境向け)

昨日のエントリーでは新規作成ファイルをBOM付きUTF-8にする失敗した事を書きました。

Unityで新規作成ファイルをBOM付きUTF-8にする方法が思いついたけど結局ダメだった話 - 強火で進め
http://d.hatena.ne.jp/nakamura001/20120823/1345741148

すると @freenee さんより解決方法を教えて貰いました。

これは眼から鱗な方法でした。確かに先頭のBOMデータ3byteは削除されますがそれ以降のデータには勝手に手を入れる事は無いでしょうから2つ目のBOMデータの3byteはそのまま残った状態で新規作成ファイルが生成されるという事を考慮した方法です。

という事でその様にC#のテンプレート(雛形)ファイルを書き換える事にしょう。このファイルはUnityのバージョンアップをした時などに更新されてしまうファイルですのコマンドを準備しました。こちらのコマンドをターミナルで実行するとC#の雛形ファイルに修正が行われます。複数回実行するとBOMデータが実行しただけ追加されてしまうので必ず1回だけ実行する様に気を付けて下さい。

cd /Applications/Unity/Unity.app/Contents/Resources/ScriptTemplates;fn=81-C#\ Script-NewBehaviourScript.cs.txt;fo=${fn}.org;mv "$fn" "$fo";echo -en '\xef\xbb\xbf' > "$fn"; cat "${fo}" >> "${fn}"

もし、間違って複数回実行してしまった場合には以下のファイルをバイナリエディタで開いて先頭6byteだけ 0xEF 0xBB 0xBF 0xEF 0xBB 0xBF となる様にして下さい。もし、7byte目以降に 0xEF 0xBB 0xBF の3byteのペアが有った場合には削除して下さい。

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

このBOMを追加するコマンド、JavaScriptやBooの雛形ファイル向けのものも作ろうかと思いましたが、それらの言語でプログラムした場合には特にBOM無しUTF-8でも文字化けしない様なのでそちらは無し。