'EUC-KR'에 해당되는 글 1건

  1. 2007.04.11 java로 UTF-8인지 euc-kr인지 확인하는 방법 1 by 홍사마

출처 : http://sodumarvin.tistory.com/29

밑에 소두마빈님의 댓글로 인하여 업데이트를 함.

소두마빈님..감사합니다..^^;

=============================================================

/* ************* 1번 스타일 ------------- */
try
{
    // Text File을 읽어올때 UTF-8 인지 EUC-KR 문자포멧인지 모를때
    // 두가지 형태로 읽은다음 라인바이라인으로 비교를 한다음에 처리한다.

    FileInputStream fis1 = new FileInputStream(pFilePath);
    FileInputStream fis2 = new FileInputStream(pFilePath);

    InputStreamReader isReaderUTF8 = new InputStreamReader(fis1, "utf-8");
    InputStreamReader isReaderEUCKR = new InputStreamReader(fis2, "euc-kr");

    BufferedReader bufReaderUTF8 = new BufferedReader(isReaderUTF8);
    BufferedReader bufReaderEUCKR = new BufferedReader(isReaderEUCKR);

    String utfLine = "";
    String euckrLine = "";

    ArrayList lineArray = new ArrayList();

    int tempI = 0;
    String tempBuffer = "";
    while (true)
    {

        utfLine = bufReaderUTF8.readLine();
        euckrLine = bufReaderEUCKR.readLine();


        if (euckrLine != null) {
        // 조금더.. 검증을 해볼 필요가 있음.
        if (utfLine.getBytes("utf-8").length == getEncodedLength(utfLine) &&     
            utfLine.getBytes("utf-8").length == euckrLine.getBytes("euc-kr").length)
        {
            lineArray.add(utfLine.trim());
        } else {
            lineArray.add(euckrLine.trim());
        }



        tempBuffer = (String) lineArray.get(lineArray.size() - 1);
        } else
        {
            if (utfLine == null)
                break;
            else {
                lineArray.add(utfLine.trim());
                tempBuffer = (String) lineArray.get(lineArray.size() - 1);
            }
        }
    }

    bufReaderEUCKR.close();
    bufReaderUTF8.close();
    isReaderUTF8.close();
    isReaderEUCKR.close();
    fis1.close();
    fis2.close();
}
catch (Exception ex) {
    ...
}

....

...
/* 2007-05-28 추가부분 */
public int getEncodedLength(String s) {
    if (s == null) {
        throw new IllegalArgumentException("Cannot calculate UTF-8 length of null string");
    }

    int result = 0;
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        if ((c >= 0x0001) && (c <= 0x007F)) {
            result++;
        } else if (c > 0x07FF) {
            result += 3;
        } else {
            result += 2;
        }
    }
    return result;
}
/*
    웹상에서 아무리 찾아봐도 없길래 ..
*/

/* ************* 2번 스타일 ------------- */
/* 링크를 클릭 후 2개의 java 파일을 받아서 테스트 하사면 됨 */
GuessEncoding :: http://glaforge.free.fr/wiki/index.php?wiki=GuessEncoding


File file = new File(pFilePath);
Charset guessedCharset = com.glaforge.i18n.io.CharsetToolkit.guessEncoding(file, 4096);

FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis, guessedCharset);
BufferedReader br = new BufferedReader(isr);

String line;
while ((line = br.readLine())!= null)
{
    System.out.println(line);
}










/* *************************************************************** */
/* 둘다 100% 한글 변환을 장담은 못하지만 사용하기에 무리가 없음 */

Posted by 홍사마