Javaサンプルソース公開

文字コード変換

Javaサンプルソース公開 - 文字コード変換

 本ソースコードは、JIS、Shift-JIS、EUC-JP、UTF-8、UTF-16ビッグエンディアン、リトルエンディアン等で符号化されたファイルの文字コード変換を行うためのJavaソースコードです。

 本ソースコードはフリーソフトウェアですので、アーカイブの転載・配布は、自由に行っていただいてかまいません。ソースコードの修正についても自由に行ってもらって結構です。商用利用についての制限もありません。

 本ソースコードが、ご利用になられる方のJavaの学習、または、Javaプログラム開発の一助になれば幸いに思います。

 ダウンロードはこちらから(外部サイト) >>

EncFileCopy.java


import java.io.*;

/**
 * 文字コード変換 Ver1.0 - Javaソース
 * JIS、Shift-JIS、EUC-JP、UTF-8、UTF-16 Big-Endian/Little-Endian等で符号化されたファイルの文字コード変換を行う。
 *
 * @author Copyright(C) 2008 東郷 功
 * @since 1.5
 * @version 1.5
 * @see 特定非営利活動法人 電脳世代
 */
public class EncFileCopy {
    /**
     * mainメソッド
     * args[0] 入力ファイル名
     * args[1] 入力ファイルの文字コード
     * args[2] 出力ファイル名
     * args[3] 出力ファイルの文字コード
     */
    public static void main(String[] args) {
        try {
            if (args.length == 0) {
                // ヘルプ表示
                UsageHelp();
            } else if (args.length == 4) {

                // 入力ファイルの存在チェック
                File iFile = new File(args[0]);
                if (!iFile.exists()) {
                    System.out.println("");
                    System.out.println("コピーに失敗しました。コピー元となるファイル(" + args[0] + ")が見つかりません。");
                    System.out.println("");
                    return;
                }

                // ストリームの作成、ラップ
                InputStreamReader in
                    = new InputStreamReader( new FileInputStream( new File(args[0])), args[1]);
                OutputStreamWriter out
                    = new OutputStreamWriter(new FileOutputStream(new File(args[2])), args[3]);

                System.out.println(args[0] + "(" + in.getEncoding() + ")を " + args[2] + "(" + out.getEncoding() + ")へコピーしています。"  );

                // ファイルの読み込みと書き込み
                int c;
                while ((c = in.read()) != -1) {
                    out.write(c);
                }
                // ストリームを閉じる
                in.close();
                out.close();

                System.out.println("コピー終了。");
            } else {
                System.out.println("コピーに失敗しました。パラメータの数が不正です。");
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("");
            System.out.println("コピーに失敗しました。パラメータに誤りがないか、または、入出力ファイル名に誤りがないか確認してください。");
            System.out.println("");
            System.out.println("java EncFileCopy [Enter] で、ヘルプが表示されます。");
        }
    }
    /**
     * ヘルプを表示する
     *
     */
    public static void UsageHelp() {
        System.out.println("<<使用方法>>");
        System.out.println("  java EncFileCopy [入力ファイル名] [入力ファイルの文字コード] [出力ファイル名] [出力ファイルの文字コード]");
        System.out.println("");
        System.out.println("<<使用例>>");
        System.out.println("  UTF-8で符号化したファイルをEUC-JPで出力する場合、コマンドプロンプトから以下のように入力します。");
        System.out.println("");
        System.out.println("  C:\\> java EncFileCopy fileA.txt UTF8 fileB.txt EUC_JP");
        System.out.println("");
        System.out.println("");
        System.out.println("<<対応する文字コード(主なもの)>>");
        System.out.println("  基本的に、Javaでサポートされている文字コードは使用できると思います。");
        System.out.println("");
        System.out.println("  Cp930 ・・・・・・・・・UDC 4370 文字を含む日本語カタカナ漢字、5026 のスーパーセット");
        System.out.println("  Cp939 ・・・・・・・・・UDC 4370 文字を含む日本語ラテン文字漢字、5035 のスーパーセット");
        System.out.println("  Cp942 ・・・・・・・・・IBM OS/2 日本語、Cp932 のスーパーセット");
        System.out.println("  Cp943 ・・・・・・・・・IBM OS/2 日本語、Cp932 および Shift-JIS のスーパーセット");
        System.out.println("  Cp33722 ・・・・・・・・IBM-eucJP - 日本語 (5050 のスーパーセット)");
        System.out.println("  EUC_JP・・・・・・・・・JIS X 0201、0208、0212、EUC エンコーディング、日本語");
        System.out.println("  ISO2022JP ・・・・・・・JIS X 0201、ISO 2022 形式の 0208、日本語");
        System.out.println("  JIS0201 ・・・・・・・・JIS X 0201、日本語");
        System.out.println("  JIS0208 ・・・・・・・・JIS X 0208、日本語");
        System.out.println("  JIS0212 ・・・・・・・・JIS X 0212、日本語");
        System.out.println("  MS932 ・・・・・・・・・Windows 日本語");
        System.out.println("  SJIS・・・・・・・・・・Shift-JIS、日本語");
        System.out.println("  ASCII ・・・・・・・・・American Standard Code for Information Interchange");
        System.out.println("  Cp1252・・・・・・・・・Windows ラテン文字-1");
        System.out.println("  ISO8859_1 ・・・・・・・ISO 8859-1、ラテンアルファベット No. 1");
        System.out.println("  UnicodeBig・・・・・・・16 ビット Unicode Transformation Format、");
        System.out.println("                          ビッグエンディアンバイト順、バイト順マーク付き");
        System.out.println("  UnicodeBigUnmarked・・・16 ビット Unicode Transformation Format、");
        System.out.println("                          ビッグエンディアンバイト順");
        System.out.println("  UnicodeLittle ・・・・・16 ビット Unicode Transformation Format、");
        System.out.println("                          リトルエンディアンバイト順、バイト順マーク付き");
        System.out.println("  UnicodeLittleUnmarked ・16 ビット Unicode Transformation Format、");
        System.out.println("                          リトルエンディアンバイト順");
        System.out.println("  UTF8・・・・・・・・・・8 ビット Unicode Transformation Format");
        System.out.println("  UTF-16・・・・・・・・・16 ビット Unicode Transformation Format、");
        System.out.println("                          必須の初期バイト順マークによって指定されたバイト順");
        System.out.println("");
        System.out.println("");
    }
}