2011-04-07 4 views
1

저는 현재 작은 메일 클라이언트를 만들고 charset에 문제가 있습니다. indy의 TIdIMAP4 구성 요소를 사용하여 메일 서버에서 데이터를 검색합니다. 메일 본문을 가져 오려고하면 ä, ü 등의 악센트 문자가 charset ISO-8859-1을 사용하므로 = E4, = FC로 각각 변환됩니다.메일 서버에서 메일을 가져올 때 문자 세트 변경!

Content-Type : text/plain; 문자 집합 = "ISO-8859-1" 콘텐츠 전송 인코딩 : 인용 - 인쇄

가 어떻게 서버가 UTF-8과 같이, 다른 캐릭터 세트 나에게 데이터를 보낼 수 있는가? 그 문제에 가장 적합한 해결책은 무엇입니까?

미리 감사드립니다.

답변

5

=E4=FC과 같은 문자열을 생성하는 것은 charset이 아니며 대신 Content-Transfer-Encoding입니다. $E4$FC은 ISO-8859-1에서 äü의 이진 표현이지만 8 비트 값입니다. 이메일은 여전히 ​​대부분 7 비트 환경입니다. 클라이언트와 서버가 통신하는 동안 8 비트 전송을 협상하지 않는 한 $7F 이상의 바이트 옥텟은 전자 메일 게이트웨이를 안전하게 통과하기 위해 7 비트 호환 방식으로 인코딩해야합니다. 특히 기존의 기존 바이트는 안전하게 보존해야합니다. quoted-printable은 전자 메일에서 텍스트 콘텐츠 용으로 일반적으로 사용되는 7 비트 바이트 인코딩입니다. base64은 사람이 읽을 수 없기 때문에 텍스트 데이터 대신 이진 데이터로 사용되는 경향이 있습니다 (텍스트에도 사용할 수 있지만).

어쨌든 서버가 다른 인코딩으로 이메일 데이터를 전송할 수 없습니다. 서버는 발신자가 원래 배달 한 원본 이메일 데이터를 전송하는 것일뿐입니다. 데이터를 UTF-8로 원하면 다운로드 한 후 직접 인코딩해야합니다. Indy가 당신을 위해 해독을 처리 할 것입니다.

+0

필자는 Indy의 TIdDecoderQuotedPrintable 클래스를 사용하여 "quoted printable"인코딩 된 문자열을 디코딩했습니다. 아주 잘 작동합니다! 고맙습니다! – Peacelyk

관련 문제