[unity] ソースコードを自動的に UTF8 エンコードに揃える

unity では 2019 現在でも windows と mac のテキストエンコードが統一されておらず、「Windows でソースコードの中に日本語を入れると、mac で文字化け(最悪コードエラー)」という状態です。

mac に Shift-JIS はありませんが、Windows は UTF8 でも問題ありません。
ならばソースコードを UTF8 に矯正するエディタープログラムを作っておこう。という事で共有します。

ダウンロード (GitHub)

使い方

GitHub のサンプルプロジェクトから Editor/EncodeUtf8 を自分のプロジェクトにコピーします。

場合によってはこれだけで(UTF8 ではない)全てのソースコードが変換されるかもしれません。
(ログに表示されます)

変換されなかった場合、追加されたメニュー Tools/Encode Utf8 を実行すると全てのコードを Assets/ から探し出し、強制的に UTF8 に変換します。

改行も \n に強制する

iOS 対応などで Windows と mac を行き来した人なら一度は見たことがあるエラー。

There are inconsistent line endings in the ‘Assets/Script/xxxxxx.cs’ script. Some are Mac OS X (UNIX) and some are Windows.

1つのファイルに Windows改行 CRLF(\r\n)mac改行 LF(\n) が混在し、それが原因で問題が起こるかもしれない、という忠告です。

mac には '\r\n'(CRLF) がないのですが、Windows(というより VS?)は '\n'(LF) でも問題なく動作するので、ソースコードの改行を '\n'(LF) に合わせます。

エンコード判定について

テキストのエンコード判定は DOBON.Net を参考にしました。

エンコード判定は「これで確実」といった方法がないため、特殊なエンコードの場合変換されないかもしれません。その場合は判定部分を hnx8 さん作の ReadJEnc に差し替えるなど、より確実な判定ロジックをご使用ください。

(unity が特殊なエンコードでソースファイルを生成することはないと思いますが…)

エディタの改行を LF に強制する

せっかくソースコードを整理したのに、Visual Studio (Code) の改行が CRLF の場合、保存する度にお馴染みのワーニングが出てしまいます。

There are inconsistent line endings in the ‘Assets/Script/xxxxxx.cs’ script. Some are Mac OS X (UNIX) and some are Windows.

エディタも 改行 = LF に変更しましょう。

Visual Studio

プロジェクトごとの設定。unity プロジェクトフォルダ直下に .editorconfig というファイルを置きます。中身はこんな風に。

[*]
end_of_line = lf
charset = utf-8-bom

VS Code(Visual Studio Code)

表示 > コマンドパレット。settings と入力し、基本設定: ユーザー設定を開く (JSON) を選択。

開かれたファイルに以下を追加。
プロジェクトごとに変更したい場合は、基本設定: フォルダー設定を開く (JSON) にすればいいと思います。 (多分)

    "files.eol": "\n",
    "code-eol.style": {
        "color" : "#ffa41b", // whatever hex color you want
        "opacity" : 0.4
    },

俺は秀丸だ!いや、TeraPad だ!Sublimeだ!

すまない。使ってないんだ。頑張って設定シテクレ。

ハロワで受講できる合格倍率5倍以上とされる IT 履修(半年間学校に通う)では、2022 年現在テキストエディタに TeraPad を使う「漢の授業」だそうです…。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA