Index > 該当する文字コードがファイルのどの行に含まれているかを調べるコード(Java)
Wed, October 1, 2008

該当する文字コードがファイルのどの行に含まれているかを調べるコード(Java)

XMLを使って、FrameMakerとかInDesignで作業していると、文字コード関係の問題にぶちあたります。 文字コードに問題があって、コード番号がエラーメッセージとして提示されても、 普通にエディタ上で眺めていても問題がどの文字で起きているかわかりません。

たぶん、文字コードが即座に表示できるテキストエディタが世の中にはあると思うのですが、 とりあえず、Javaで指定のコードが出現する行を調べるコードを書きました。

コード

ChkChar.java

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;

public class ChkChar{

    //private static char TARGET='\u2029';
    private static char TARGET='\u0101';

    private static final String ENC="UTF-8";



    public static void main(String[] args){

        if(args.length!=1){
            System.exit(0);
        }

        File f=null;

        if(args.length>=1)
            f=new File(args[0]);

        try{
            BufferedReader br= new BufferedReader(new InputStreamReader( new FileInputStream(f),ENC));

            String line=null;
            while( (line=br.readLine())!=null ){
                for(int i=0; i<line.length(); i++){
                    if(TARGET==line.charAt(i)){
                        int code=(int)(line.charAt(i));
                        System.out.println("Found : "+Integer.toHexString(code) );
                        System.out.println(line);
                    }
                    else{
                        //System.out.println(line.charAt(i));
                    }
                }
            }
            br.close();
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }
}

使い方

調査対象となるファイルがfoo.txtの場合、以下のように使います。

$ javac ChkChar.java
$ java ChkChar foo.txt

指定した文字コードが含まれていた行が標準出力されます。

 Twitter
follow me on Twitter
 Categories