0.

 

옛날에는 사람보다 컴퓨터가 귀했기 때문에 쓸데없는 작업을 위해 컴퓨터의 연산능력을 사용하는 것은 터부시되었다고 한다. 포탄의 탄도 계산을 위해 중견 도시의 전력 사용량에 맞먹는 전기를 빼먹던 초기 컴퓨터 시대를 생각하면 그럴법도 하다. 지금은 NASA에서 사람을 달로 보내기 위해 필요했던 연산 능력을 누구나 손에 들고 다니면서 닭을 돼지에게 날리는데 쓰는 시대이기 때문에 사람이 하기 귀찮은 일은 컴퓨터에 맡기는 것이 미덕이 되고 있다.

 

그런 의미에서 텍스트 파일 포맷의 스프레드시트 파일인 csv를 읽어서 db에 때려박는 작업을 하려는데 한글 문자가 아스팔트에 갈린 수박처럼 깨져서 나오는 난관에 봉착했다. 파일 입력부의 소스는 다음과 같다.

 

FileReader fr = new FileReader(props.getUploadPath()+path);
BufferedReader br = new BufferedReader(fr);
String str = new String(new byte[835],"euc-kr");

인코딩이 깨지는 이유는 파일을 읽어오는 단계에서 이미 난도질 당해서 가져오는 것이라 그렇다.

해결책은 다음과 같다. 별 것도 아닌 내용을 굳이 태그 붙여서 블로그에까지 남기는 이유는 후손들이 이딴 문제로 시간 낭비하지 않기를 바라는 마음에서이다.

1.

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(props.getUploadPath()+path,"euc-kr"));
String str = new String(new byte[835]);

2. 윈도우에서 손을 뗀다.

3. 한글에서 손을 뗀다.

4. 코딩에서 손을 뗀다.

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크
2011/10/20 15:37 2011/10/20 15:37

Trackback Address :: http://blog.jinbo.net/yog/trackback/77

  1. 앙겔부처 2011/10/20 23:46

    뭐야 이거 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 결말이 적절하군여 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 개욱껴 ㅋㅋㅋㅋㅋㅋㅋㅋ

    인코딩 골치 아파 프로그램적인 걸 잘 몰라서 이해가 안 돼 왜 인코뎅 안 깨지게 못 마추는지 왜 그게 어렵다는 건지...-_- 세계 공통의 인코딩은 불가능한가?! 예전에 팔레스타인 시골 마을에서 이장님의 컴퓨터를 써야만 했을 때, 그 때 익스플로어에서 인코딩을 찾아서 바꿔서 한글을 읽으려 했지만 도대체 그 인코딩조차 아랍어라 대낭패를 봤던 기억이 떠오르네영

    그나저나 님의 글을 읽으며 나는 과거회상을 많이 하는군... -ㅁ- 님은 현재지향적인 인간인데 말야 흥 

  2. 앙겔부처 2011/10/20 23:47

    그나저나 너 스킨 바꿔라 이거 내 랩탑에선 글씨 보기 너무 힘들어.

    글구 옛날 글은 왜 지웠어???? 없넹