2014-06-23 1 views
0
BodyPart b = mp.getBodyPart(j); 
     String mimeType2 = b.getContentType(); 

     Object o2 = b.getContent(); 

     System.out.println("O2 is " + o2); 
     if ((o2 instanceof String)) 
     { 
     return (String) o2; 
     } 

이 코드를 사용하여 전자 메일에서 본문을 여러 부분으로 읽습니다. 그것은 잘 작동하지만 그것이 보여줄 때 ??? 제목과 메시지의 특수 문자.Javax 메일 디코딩 특수 문자

나는 stackoverflow를 탐색하고 인터넷 검색을하고 나면 곧바로 utf-8 형식으로 디코딩 할 방법을 찾지 못한다.

mimeutility에서 decodeText를 사용했지만 여전히 ???

올바른 방법은 무엇입니까?

답변

0

인코딩이 제한된 바이트에 (유니 코드) 문자를 쓸 수없는 경우 ?이 표시됩니다.

Windows에서 System.out은 일반적으로 단일 바이트 Windows ANSI 인코딩을 사용합니다.

일반적으로 코드에서 텍스트 (String/Reader)를 이진 데이터 (byte[]/OuputStream)로 출력하는 방법을 확인하십시오.

테스트를 위해 파일을 작성하십시오. 인코딩을 처리 할 수있는 JEdit 또는 NotePad ++와 같은 프로그래머 편집기로 확인할 수 있으므로 파일에 작성하십시오.

인코딩이있는 버전도있는 오버로드 된 메서드를 사용하지 않는지 확인하십시오. FileWriter를 사용하지 마십시오.

void dumpString(String s) { 
    for (int i = 0; i < s.length(); ++i) { 
     System.out.printf("%04x ", 0xFFFF & (int)s.charAt(i)); 
    } 
    System.out.println(s); 
} 
+0

감사합니다. 당신이 옳았. – cloudpre