【Unity】 ファイルの文字コードの変換

Unityで扱うソースコードの文字コードの変換について。

最近はUTF-8がどの環境でも主流になってきた文字コードだが、
UnityでもUTF-8かUTF-16にしないとエディタ内で文字化けが発生することがある。

スクリプトを新規作成しても文字コードがShift-JISで作成され、
現在のところはそのデフォルトの設定はどうも変更出来ないようだ。


そこで文字コードを変換するのにどういう手段があるのかを幾つか紹介したい。

まずはUnityのAssetPostProcessorで変換してしまうという方法。

スクリプトファイルのutf-8変換

プロジェクトツリーに入っているものは何でも「アセット」として扱われるから、
ソースコードすらもAssetPostProcessorで操れる。

このスクリプトをプロジェクトに入れておけば、新規作成時からUTF-8として作ってくれる。


ただこの方法では、コピペで他から持ってきたソースコードまではカバー出来ないので
結局何かで一括で変換するといった作業は必要になるだろう。

そこで自分はいつも下記の方法で行っている。

FileCode Checkerというツールを使う(Windowsのみ)

・Macではnkfコマンドで変換


FileCode Checkerはドラッグ&ドロップで変換したいファイルやフォルダを選択出来て、
例外の拡張子の設定も出来るので、かなり重宝している。
(欲を言えば例外じゃなくて変換したい拡張子だけを指定出来る方が嬉しかったが...)

とりあえず定期的に、UnityのScriptフォルダやEditorフォルダを放り込んで変換しておけばいい感じ。
やっぱりGUIツールで変換出来るのはラクで素晴らしい。


Macのnkfコマンドでの変換は、まずnkfのパッケージをインストールする必要がある。

方法は色々あるが、自分はMacPortsでインストールした。
この辺はググればいくらでも出てくる。

肝心の使い方だが、ターミナルで変換したいソースコードがあるフォルダまでディレクトリを移動し、
下記コマンドをいつも叩いている。

文字コードを調べる
find . -name '*.cs' | xargs nkf -g

拡張子がcsのファイルをUTF-8(BOM付き)・改行コードLFに変換
find . -name '*.cs' | xargs nkf -w8 -Lu --overwrite



このコマンドの意味を詳しく解説するのもめんどくさいので要約すると、
findで今のディレクトリ以下のサブフォルダを含む全ての拡張子がcsのファイルを探して、
その全てをUTF-8(BOM付き)・改行コードLFに変換している。


MacのMonoDevelopは改行コードがLFじゃないといちいち警告を出してくる困ったちゃんだ。
だがWindowsでもVisual StudioがCR・LFじゃないと警告が出る。

Windows・Macの両方で同一プロジェクトを見る事がある場合に
改行コードをどうしようかでいつも迷うが、とりあえずLFにしておいた方が安全な気はする。
(いつも最終的に困るのはMac環境なので...)


今この記事を書いていて思いついたが、やろうと思えばUnityのEditorスクリプトで、
前述の変換スクリプトの内容を応用してファイルの文字コードの一括変換をやれる気がしてきた。

き、気が向いたら作ろう。

[ 2013年10月12日 18:20:34 : Unity ]

カレンダー

プルダウン 降順 昇順 年別

06月 | 2020年07月 | 08月
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -


全記事表示リンク

全ての記事を表示する

検索フォーム

リンク