Help us understand the problem. What is going on with this article?

Git / SourceTree で、Shift JIS ファイルの差分を文字化けなく表示する

More than 1 year has passed since last update.

歴史的経緯など、やんごとなき事情により、現在でも文字コード Shift JIS の案件があります。あるところには、あります。

そういった UTF-8 以外の文字コードに対して git を使用した場合、diff が文字化けして読めない!!! といった事態が発生します。

スクリーンショット 2018-09-10 18.01.51.png

その対処方法です。

(Mac でしか検証していませんが) 以下の方法で、ターミナルでも SourceTree でも、SJIS の差分の文字化けが解消できました。

設定

.gitattributes ファイルと、config の textconv 設定を利用します。

まず、プロジェクトのルートディレクトリに、 .gitattributes ファイルを作成。

今回は拡張子 html のファイルはすべて Shift JIS とみなし、以下のように記述します。

*.html diff=sjis

これは拡張子 html のファイルには、差分表示時に sjis というフィルタを使え、という設定です。

続いて、sjis という差分表示用のフィルタを定義します。

$ git config diff.sjis.textconv "iconv -f sjis"

Mac には最初から文字コード変換コマンドとして iconv が入っています。こちらを利用し、iconv コマンドで Shift JIS を UTF-8 に変換してから diff を表示せよ、という設定になります。

上記2つの組み合わせで、拡張子 html のファイルの差分は、iconv によるコード変換を通した結果が出力されるというわけです。

ちなみに、さきほどの git config コマンドにより、.git/config ファイルには以下のような設定が追記されます。

[diff "sjis"]
    textconv = iconv -f sjis

結果

いけたー 🙌

スクリーンショット 2018-09-10 18.02.05.png

SourceTree でもいけたー 🙌

スクリーンショット 2018-09-10 18.29.42.png

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした