Crystal Dew World [ja]

GitによるUTF-16差分管理

GitによるUTF-16差分管理

背景

ソースコードをUTF-8で記述することが多くなりましたが、様々な事情でUTF-8を使えない場合もありますよね。

CrystalDiskMarkとCrystalDiskInfoの翻訳ファイル(*.lang)は、気軽に翻訳していただくためにシンプルなini形式を採用しています。しかし、ini形式を扱うAPI(GetPrivateProfileStringWなど)は、UTF-16 (LE, w/ BOM) にしか対応しておらず、Gitでは、UTF-16はバイナリ扱いとなるためそのままでは差分管理ができない問題があります。

対策

拡張子が .lang の場合、.gitattributesに以下のように追記すれば、Gitで差分管理ができるようになります!

*.lang working-tree-encoding=UTF-16LE-BOM eol=CRLF

判明したきっかけ

@kenichiuda さん、アドバイスありがとうございました!

リファレンス

https://git-scm.com/docs/gitattributes

サンプル

https://github.com/hiyohiyo/Priscilla/commit/e89364d7f899ec7f38873dcb38fc96a9d651dcaa

Return Top