2017-05-11 3 views
0

제목을 메일 헤더에 구문 분석하는 중에 문제가 발생했습니다. 예를 들어, 주제의 형식은 다음과 같습니다. SO, SI, ESC $) C -이메일 제목을 디코딩하는 방법

subject: =?iso-2022-KR?B?DjlMOC4PIA....gyDzogT?= 

내 생각 엔 base64로 디코딩 이스케이프 문자를 포함해야한다는 것입니다 -. 그러나 디코딩은 포함되지 않습니다. 정상적인 문자열을 얻으려면 어떻게해야합니까?

결과가 아래와 같을 것으로 기대됩니다.

Subject: like this, 안녕하세요. 

코드 수준에서 응답하는 방법을 알려주세요. C

업데이트

죄송에서 . 나는 SO, SI 이었지만 나는 그것을 놓쳤다. 그러나 ESC $) C, 문제가 즉시 해결되어 다른 사람들과 공유되었습니다. ESC $으로의 부재) C에서

libiconv 문제이지만의 glibc)의 는 gconv (문제가 아니었다. 내가 사용한 것은 libiconv이었다. gconv으로 변경하면 문제가 해결되었습니다.

감사합니다.

+0

형식은 다음과 같습니다.'=? charset? encoding? encoded text? =.'encoding은 quoted-printable 인코딩과 비슷한 Q 인코딩을 나타내는 Q 또는 base64 인코딩을 나타내는'B '중 하나 일 수 있습니다. –

+0

더 많은 제안을 얻으려면 지금까지 가지고있는 코드와 출력을 제공하는 것이 좋습니다. –

+0

감사합니다.하지만 전환에 관한 부분은 대부분 알려져 있습니다. ** iso-200-KR **이 어떻게 처리되는지 궁금합니다. –

답변

1

따라서 =?iso-2022-KR?B?DjlMOC4PIA....gyDzogT?=에서 B은 물음표로 묶여 base64로 인코딩됨을 의미합니다. iso-2022-KR이 문자 집합입니다. DjlMOC4PIA....gyDzogT은 base64로 인코딩 된 제목입니다.

먼저 제목을 base64로 디코딩하십시오. a solution for this in C을 쉽게 찾을 수 있습니다.

이렇게하면 ISO-2022-KR 문자 집합으로 인코딩 된 제목 인 2 진수 바이트 배열이 남습니다. 아마 당신은 UTF-8 또는 컴퓨터가 처리 할 수있는 다른 문자 세트로 변환하려고합니다. 이 부분에 대한 최선의 방법은 문자 집합 변환 유틸리티를 사용하는 것입니다. Linux 또는 macOS를 사용하는 경우 iconv 라이브러리를 사용할 수 있습니다. iconv_open, iconv 및 iconv_close를 참조하십시오.

+0

감사합니다. 이미 base64 디코딩을 수행하고 iconv를 통해 변환했습니다. 그러나 base64 디코딩의 결과는 문자 집합으로 변환 할 때도 한글이 아닌 영어의 동일한 출력입니다. 메일 본문에서 iso-2022-kr ** - SO, SI, ESC $) C - **를 변환하려면 특수 문자를 포함시켜야했습니다. 그러나 base64 디코딩 결과에는 이러한 문자가 포함되지 않습니다. 관련성이 있습니까? ** 주제 **가 ** 메일 본문 **과 다른 방식으로 변환됩니까? –

관련 문제