メインコンテンツまでスキップ

Eclipse:新規ファイルにBOM(UTF-8)をつける

· 約2分
mebiusbox
enginner

Eclipse で新規にファイルを作成すると Workspace に設定されたエンコードで保存されます。 文字エンコーディングを UTF-8 に設定した場合、新規にファイルを作成しても BOM は付きません。 そこで、BOM を付加するスクリプトを書きました。Ruby 版と Python 版があります。

AddBom.rb

#! /usr/bin/env ruby

path = ARGV[0]
puts "Add BOM to #{path}"
src = File.read(path)
bom = "\xEF\xBB\xBF"
if src.index(bom) == 0
raise "BOM already exists"
end

File.open(path, "w") do |io|
io << bom
io << src
end

AddBom.py

# -*- coding:utf-8
import os
import sys

def main(path):
f = open(path, mode='rb')
data = f.read()
f.close()

utf8bom = "\xef\xbb\xbf"
if len(data) >= 3:
if data[0:3] == utf8bom:
print "BOM already exists " + path
return 0

f = open(path, mode="wb")
f.write(utf8bom)
f.write(data)
f.close()
print "Add BOM to " + path
return 0

if __name__ == '__main__':
if len(sys.argv) < 2:
print sys.argv
print "addbom <path>"
sys.exit(0)
else:
sys.exit(main(sys.argv[1]))

eclipse に外部ツールとして登録する

メニューバーから Run > External Tools > External Tools Configurations... を選択します。 新規作成し、AddBom.rb もしくは AddBom.py を登録します。

AddBom.rb の場合

項目設定
NameAddBom
Locationruby.exe のパス
Arguments<AddBom.rbのパス\> ${resource_loc}

AddBom.py の場合

項目設定
NameAddBom
Locationpython.exe のパス
Arguments<AddBom.pyのパス\> ${resource_loc}

使い方

新規ファイルを作成し、そのファイルを開いた状態で AddBom を実行します。 BOM がなければ追加され、すでに追加されていれば何もしません。 また、空ファイルでなくても問題なく動作します。