グルーヴであなたのビジネスは加速する

グルーヴであなたのビジネスは加速する

Jar ファイルの文字コード

2016年12月24日 12時33分15秒 | 日記

Eclipse で Java プログラムを実行しても大丈夫だったはずが、いざ Jar ファイルを作って実行すると コンソール出力やログファイルが文字化けするときは

 

Eclipse なのか Ant なのか Log4j2 なのか色々悩みました。

 

こたえは Log4j でした。

ログファイルに出力するときの文字コードを指定します。

赤文字の属性を PatternLayout に持たせます。
 

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
    <Properties>
        <Property name="loglayout">%d{yyyy-MM-dd HH:mm:ss.SSS}, %-5p, %t, %c, %m%n</Property>
        <Property name="filename">Log/App.log</Property>
    </Properties>
    <Appenders>
        <RollingFile name="RollingFile" fileName="${filename}" filePattern="${filename}-%d{yyyy-MM-dd-HH}-%i.log" ignoreExceptions="false">
            <PatternLayout pattern="${loglayout}" charset="UTF-8" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="250 MB" />
                <OnStartupTriggeringPolicy />
            </Policies>
            <DefaultRolloverStrategy max="9"/>
        </RollingFile>
        <Console name="STDOUT" target="SYSTEM_OUT" ignoreExceptions="false">
            <PatternLayout pattern="%m%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="trace">
            <AppenderRef ref="STDOUT" />
            <AppenderRef ref="RollingFile" />
        </Root>
    </Loggers>
</Configuration>
 

またプロパティファイルなどのリソースをファイルにもたせてプログラムから参照しているときも注意が必要です。

ファイルから読み込むときに文字コードを指定しておかないと Windows だとシフトJIS で実行されるので読み込んだ時点でファイルが文字化けします。Eclipse で動かすときは 文字コードを指定しているので文字化けしません。

 

InputStream is = XXXXX.class.getClassLoader().getResourceAsStream("App.properties");
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));

 

今回いろいろ悩んだため書き留めておきます。

ジャンル:
ウェブログ
コメント   この記事についてブログを書く
この記事をはてなブックマークに追加
« Adobe Acrobat Reader デフォ... | トップ | ひさびさ感動 エクセルのオブ... »
最近の画像もっと見る

コメントを投稿

日記」カテゴリの最新記事

トラックバック

この記事のトラックバック  Ping-URL
  • 30日以上前の記事に対するトラックバックは受け取らないよう設定されております。
  • 送信元の記事内容が半角英数のみのトラックバックは受け取らないよう設定されております。
  • このブログへのリンクがない記事からのトラックバックは受け取らないよう設定されております。
  • ※ブログ管理者のみ、編集画面で設定の変更が可能です。