| [ CnUnix ] in KIDS 글 쓴 이(By): AHMLHS (the Nobody) 날 짜 (Date): 1995년12월19일(화) 12시46분21초 KST 제 목(Title): 그리고 한글메일깨진것들. QP인코딩되서 깨져날라온 것은(=F8=B0 모 이딴 식으로 나오는거, MIME Header에는 Quoted Printable이라고 되어있음) ftp://romance.kaist.ac.kr/pub/linux/han/hdcod.tgz 쓰시고, Base64 인코딩된건 다른 분이 작성한 간단한 프로그램이 있더군요. 아래에 소스를 올려드리죠.(이건 MIME Header에 Base64라고 써있음) 그리고 euc-kr어쩌구 저쩌구 + ^N, ^O가 마구 섞여있는 메일은 hcode 쓰면 거의 해결됩니다. hcode -ik 나 hcode -dk 정도 쓰면 왠만하면 보이더군요. 글구 자꾸 sdn2ks이야기를 하시는데 그거쓸바에 차라리 hcode쓰세요. sdn2ks는 out of date된 겁니다. 에이 그거 밀어버릴까. 쭈압. 아래는 Base64 디코더. /* decode_base64.c */ #include <stdio.h> main(argc,argv) int argc; char *argv[]; { FILE *qef; char out[100]; if(argc < 2) { printf("Usage: decode_base64 infn\n"); exit(0); } qef = fopen(argv[1],"r"); decode_base64(qef,out); printf("New file at: %s\n",out); fclose(qef); } decode_base64(qef,qdfn) FILE *qef; char *qdfn; { FILE *qdf; unsigned char aline[120]; unsigned int c1,w1,wx; int b1,cv[128]; int i,ip,j; /* Initialize table */ for(i=0;i<128;i++) cv[i] = -1; for(i=0;i<26;i++) { cv[i+'A'] = i; cv[i+'a'] = 26+i; } for(i=0;i<10;i++) cv[i+'0'] = 52+i; cv['+'] = 62; cv['/'] = 63; cv['='] = -2; /* padd character */ ip = 0; w1 = 0; strcpy(qdfn,tempnam("/tmp","SD")); qdf=fopen(qdfn,"w"); while(fgets(aline,120,qef) != NULL) { for(j=0;j<strlen(aline)-1;j++) { c1 = aline[j]; b1=cv[c1]; if(b1 >= 0) { w1 = (w1 << 6) | b1; ip += 6; if(ip>=8) { wx = w1 >> (ip - 8); ip -= 8; wx &= 255; putc(wx,qdf); w1 &= 0xffff; } } } } fclose(qdf); } 그럼. --- Lee, "AHMLHS" Ho-sun ahmlhs@yoyo.kaist.ac.kr |