2013-07-11 8 views
1

메일 메시지의 내용을 XML 형식으로 변환해야하지만 인코딩 문제가 발생합니다. 실제로 모든 악센트 부호가있는 문자와 다른 문자는 모두 16 진수 값으로 메시지 파일에 표시됩니다. 예는 :메일 소스 파일에 16 진수 값으로 표시된 악센트 부호가있는 문자

é is displayed =E9, 
ô is displayed =F4, 
= is displayed =3D... 

메일은 ISO-8859-1 코드와 함께 전송되도록 구성되고, 내가 파일에 이러한 매개 변수를 볼 수 있습니다

Content-Type: text/plain; charset=ISO-8859-1 
Content-Transfer-Encoding: quoted-printable 

메모장 ++ UTF로 ANSI "로 파일을 감지 -8 ".

읽을 수 있도록 C# (SSIS 프로젝트의 스크립트 작업에 있음)로 변환해야하며 그렇게 할 수 없습니다.

StreamReader에서 UTF-8 인코딩을 시도했지만 아무 것도 수행하지 않습니다. 주제에 대한 나의 독서에도 불구하고, 나는 아직도 나의 문제로 인도하는 단계와 그것을 해결하는 방법을 이해하지 못한다.

Outlook에서 메시지를 잘 디코딩하고 악센트 부호가있는 문자가 올바르게 표시된다는 점을 지적합니다.

미리 감사드립니다.

답변

0

나는 잘못된 방향을 찾고있었습니다. 여기에있는 키워드는 "Quoted-Printable"입니다. 이것은 내 문제가 발생하는 곳이며 이것이 실제로 해독해야하는 부분입니다.

C#: Class for decoding Quoted-Printable encoding?

기재 한 방법이다 :

public static string DecodeQuotedPrintables(string input) 
{ 
    var occurences = new Regex(@"=[0-9A-F]{2}", RegexOptions.Multiline); 
    var matches = occurences.Matches(input); 
    foreach (Match match in matches) 
    { 
     char hexChar= (char) Convert.ToInt32(match.Groups[0].Value.Substring(1), 16); 
     input =input.Replace(match.Groups[0].Value, hexChar.ToString()); 
    } 
    return input.Replace("=\r\n", ""); 
} 

내가에서는 StreamReader를 열고 요약 그러기 위해서는

, 난이 글 마틴 머피 등록한 예를 따라 UTF8로 바꾸고 각 읽기 행을 다음과 같은 문자열에 배치하십시오.

myString += line + "\r\n"; 

UTF8에서 내 StreamWriter를 열고 디코딩 된 myString 변수를 작성하십시오.

myStreamWriter.WriteLine(DecodeQuotedPrintables(myString));