eclipseデフォルトの文字コード

eclipseデフォルトの文字コード

java開発では標準的に使っているeclipse。
今回は軽量な環境を使いたかったので重いpleiades all in oneでは無く、eclipseに必要なモジュールを追加しながら環境を整えた。
設定も自分で一から行う必要があった。

そんな中でハマったのがJSPの文字コード。
今回の仕事では既存JSPを改修する必要がある。
そこには日本語のコメントが多数書かれているが、そこが文字化けしてしまう。
ファイルを1つずつ、Propertiesを開いて Text file encodingを「Other:UTF-8」に変更しても良いのだけれども、ファイル開くたびに実行するのは面倒。

対処

Geneal > Content Types > Contet types: > Text > JSPと選択すると、画面の一番下に Default encoding: の欄がある。ここの設定を Default encoding: UTF-8 と指定する。
なお元々の設定は ISO-8859-1(ラテン・アルファベットの文字コード。Latin-1)。

この設定の優先度がとても強く、他の設定より優先されていた。

同じタグの記事
同じカテゴリの記事

eclipseの良く使うショートカットキー

eclipseの良く使うショートカットキー

タブの切り替え

Ctrl + E

このキーを押すと現在開いているタブのリストが表示される。
そのままキーワードを入力して絞り込みをしてEnterを押しても良いし、カーソルキーの上下で選択してEnterを押しても良い。
eclipse4.7oxygenからは、タブのリストがカーソル位置に出るのでさらに便利。

リソースを開く

Ctrl + Shift + R

クラス名やファイル名はなんとなくわかっているけど、
そこまでパスを辿るのが面倒なときは、これで簡単にリストを表示できる。

この機能と合わせて使いたい機能は「プロジェクトを閉じる」。
複数のプロジェクトを開いていると、全てのプロジェクトから検索してしまい、今回は必要としないファイルも検索されることがある。
それを避けるため、あまり使っていないプロジェクトはプロジェクトを閉じておくことで、検索結果がスッキリする。
プロジェクトを閉じる方法は、プロジェクトを右クリックして「Close Project」をクリックするか、
プロジェクトを選択してからメニューの「Project」-「Close Project」を選択する。

戻る

Alt + Left

クラスやメソッドの定義へF3でジャンプした後に、元の場所に戻る。
この機能が使えるから、気軽にジャンプできる。

同じタグの記事
同じカテゴリの記事

バッチ処理の基本・ファイル入出力

バッチ処理の基本といえば、ファイル入出力。
最近は、DBアクセスが基本となっているが、システム間連携などは、未だにファイル連携が多い。
連携されてきたファイルを直接取り込んでも良いけど、あまりにも格好悪いファイルは、事前にある程度整えておきたい。
そんな時に、バッチ処理が役立つ。
私がよく使い言語は、下記の4つ。それぞれの言語で、1つのファイルを読んで、1つのファイルを出力する雛形を置いておく。

1.pythonの場合(最近は、pythonでチョチョっと加工することが多いかも)

1
2
3
4
5
6
import codecs
with codecs.open('in.txt', 'r', 'utf_8') as r, codecs.open('out.txt', 'w', 'utf_8') as w:
    counter = 0
    for line in r:
        counter += 1
        w.write('{:03d}:{}'.format(counter, line))

とても簡潔に、描きたいロジックだけを書くことができます。

2.javaの場合(Javaで作らないと実行の承認が通らない時はJavaで作ります)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.lang.String;
import java.nio.file.Paths;
import java.nio.file.Files;
import java.io.BufferedReader;
import java.io.Writer;
import java.nio.charset.StandardCharsets;
import java.nio.file.StandardOpenOption;

public class FileIo {
    public static void main(String[] args) {
        try (
            BufferedReader r = Files.newBufferedReader(
                    Paths.get("in.txt"), StandardCharsets.UTF_8);
            Writer w = Files.newBufferedWriter(
                    Paths.get("out.txt"), StandardCharsets.UTF_8,
                    StandardOpenOption.WRITE,
                    StandardOpenOption.APPEND,
                    StandardOpenOption.CREATE)
        ) {
            String line = null;
            int counter = 0;
            while((line = r.readLine()) != null) {
                counter++;
                w.write(String.format("%03d:%s\n", counter, line));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

昔に比べれば、だいぶシンプルに書けるようにはなったけど、冗長な感じがする。
しかし、実行速度は結構速い。Java7以降は性能をほとんど気にせずコーディングしても、それなりのスピードで動いてくれる。

3.C#の場合(実行環境がWindowsの場合はC#で作ればだいたい動く)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System;
using System.Text;
using System.IO;

public class FileIo
{
    public static void Main()
    {
        try
        {
            using(StreamReader r = new StreamReader("in.txt", Encoding.GetEncoding("UTF-8")))
            using(StreamWriter w = new StreamWriter("out.txt", false, Encoding.GetEncoding("UTF-8")))
            {
                int counter = 0;
                while(r.Peek() >= 0)
                {
                    counter++;
                    w.WriteLine(string.Format("{0:000}:{1}", counter, r.ReadLine()));
                }
            }
        }
        catch (Exception e)
        {
            Console.Write(e.StackTrace);
        }
    }
}

Visual Studioがなくても、気合いでC#を簡単なテキストエディタでコーディングして、
.Net Framework付属のcscでコンパイルし実行できます。
特別な環境がなくても動くあたりは素晴らしい。

4.perlの場合(ファイル入出力はやっぱり速い。Pythonでは性能が出ない時はperlで実装)

1
2
3
4
5
6
7
8
9
10
use strict;
open my $r, '<:encoding(utf8)', 'in.txt';
open my $w, '>:encoding(utf8)', 'out.txt';
my $counter = 0;
while (<$r>) {
    $counter++;
    printf $w "%03d:%s", $counter, $_;
}
close $r;
close $w;

perlもシンプルに書けて良い。ただし、最近のredhatはperlがインストールされていない
こともあるので、必ずインストールされているPythonでツールを作ることが多くなった。
perl実行環境は、WindowsでもLinuxでもOracleがインストールされていると、その中に大概入っている。
そのperl実行環境を利用するのも良い。Oracleインストール領域に入っているので、perlからOracleに接続してDB操作するのも簡単。

python,java,c#はcloseの心配がない構文が用意されているのが良い。
perlはcloseを明示的に行う必要がある。
python,perlは目的のロジックに集中してコーディングができる。
Java,C#は定義部分が多くて。
VisualStudioやEclisepに頼って簡単にコーディングできたとしても、
メイン処理以外が多いのは、後から読んだ人にとってもメンテナンスしづらいかも。

同じタグの記事
同じカテゴリの記事