파일이 utf8인지.. euckr인지 확인하는 방법 아시나요?
Submitted by queryman on 월, 2008/02/25 - 5:10pm.
갑자기 궁금해져서요;;;
전에 명령어로 확인할 수 있는것 같았는데 기억이 전무하네요;;;
어떤 파일이 utf8로 작성되었는지 euckr로 작성되었는지 확인하는 명령어나 다른 방법아시는분;;
공부삼아 ^^;;;


file 명령으로 어떤 건
file 명령이 어떤 건 utf-8이라고 나타내주던데...
모든 utf-8 문서를 utf-8이라고 나타내주진 않더군요.
그래서 원하는 용도로는 사용이 안 될 것 같습니다.
--
academic은 제 고등학교 때 동아리 이름입니다.
academic, 아주 가끔은 저도 이랬으면 좋겠습니다.
뭐 euc쪽은
뭐 euc쪽은 그렇지만
utf-8이라면 첫3바이트로 구분할수 있지 않을까요?
혹시 BOM을
혹시 BOM을 말씀하시는 거라면, utf-8은 BOM이 있는 경우도 있고 없는 경우도 있습니다.
게다가 저만 그런건진 모르겠지만 BOM이 달린 utf-8문서는 본적이 없네요...
BOM은 utf16, utf32일때만
BOM은 utf16, utf32일때만 해당됩니다. utf8은 해당사항 없습니다.
Written By the Black Knight of Destruction
MS 윈도우에서는 많이
MS 윈도우에서는 많이 볼 수 있습니다.
메모장에서 작성하면 BOM이 달리는 걸로 알고 있습니다.
--
academic은 제 고등학교 때 동아리 이름입니다.
academic, 아주 가끔은 저도 이랬으면 좋겠습니다.
먼저 아래 명령어로
먼저 아래 명령어로 utf-8 인코딩인지 먼저 검사합니다.
위 명령에서 실패했다면 cp949를 검사하죠.
그다음 같은 방법으로 euckr로 검사합니다.
검사순서는 텍스트가 0x20부터 0x7f까지의 아스키로만 된 경우 utf-8로 판단하기 위함이구요... 필요하면 바꿔도 되죠.
참고로 바이트 모양이 같으면 cp949문서가 utf-8로도 판단될 수 있습니다. 이경우 텍스트가 깨졌는지 눈으로 보고 판단을 해야겠죠....
용량이 크거나, 파일이 많다면...
용량이 크거나 파일이 많다면 특정부분만 짤라서 iconv 하시는게 좋을 듯합니다.
저도 귀찮아서 매번 그냥 스크립트로 UTF-8, EUC-KR, ASCII, EUC-JP ..등으로 iconv 하는데 은근히 시간걸리네요.
좀 화끈(?)한 방법이 있으면 좋으련만...
OTL
head가 출동하면
head가 출동하면 어떨까요?
중복삭제.
중복삭제.
OTL
euc-kr 에 대해서만 php
euc-kr 에 대해서만 php 로 체크를 할 수 있도록 만들어 놓은 것이 있습니다. 다른 문자셋에 대해서는 고려를 하지 않은 관계로 .. 제 트랙백 처리에 사용을 하고 있습니다.
http://my.oops.org/62 참조 :-)
다들 고맙습니다 ^^
답변들 고맙습니다. ㅎㅎ
제가 알고있던게 file인듯 싶네요... ;; 설마했지만.. 예전엔 다 되는듯 했는데 다 되는게 아니었나 봐요 ^^;
귀찮지만.. 일일이 확인하는 수밖엔;;
-------------------------------------------------------------------------------------------
생각은 지나가던 개새끼도 하지.. 실천하는건?? 나도 할수있지...
http://mrdics.tistory.com
mozilla 에서 나온
mozilla 에서 나온 chardet 를 사용하는 방법도 있습니다. (c++)
이를 python 으로 포팅한 게 아래 녀석이구요.
http://chardet.feedparser.org/
찾아보시면 java 버젼도 있습니다.
--
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~ 나 한줄기 바람처럼..
완벽하게 구별하는
완벽하게 구별하는 방법은 없고,
직접 구현하고자 하신다면 개별 문자들이 euckr이나 utf8로 해석되었을 경우
한글 영역 등에 맞는 경우가 발생하는 빈도를 가지고 판단을 해야 합니다.
좀 인공지능적인 개념이 들어가야죠.
Written By the Black Knight of Destruction
IBM의 ICU에서도
IBM의 ICU에서도 mozilla의 chardet과 같은 역할을 하는게 있습니다.
http://www.icu-project.org/
--
academic은 제 고등학교 때 동아리 이름입니다.
academic, 아주 가끔은 저도 이랬으면 좋겠습니다.
윗분들이
윗분들이 말씀하셨다시피 UTF-8이든 EUC-KR이든 바이트열 포맷의 일종이고, 같은 바이트열에 대해 두 문자셋에서 모두 적법할 수 있습니다. 대개 그래서 적법성을 판단하기 보다는 Mozilla의 chardet처럼 해당 문자셋에서 통계적으로 잦은 조합들을 가지고(이를테면 EUC-KR은 한국어를 위해 많이 사용되므로, 한국어 문장에서 잦은 패턴들이 그대로 반영되겠죠) 패턴을 확인하는 식으로 추측합니다.
2년여를 기다려도 icu
2년여를 기다려도 icu 의 chardet 도 PHP 에서는 지원하지 않네요. 기다리다 지쳐서 mod_chardet 확장을 만들어 버렸습니다. ICU / Universal chardet(Mozilla) 둘다 지원합니다.
자세한 내용은 http://my.oops.org/126 을 참조하세요.