2009-04-21 12 views
2

Ich habe Probleme, türkische Zeichen in Mail mit Java-Code gesendet. Die Zeichen werden als Fragezeichen (?) In der Mail angezeigt.Java Mail Problem mit türkischen Zeichen

Message msg = new MimeMessage(mailSession); 
msg.setHeader("Content-Encoding","ISO-8859-9"); 
msg.setFrom(new InternetAddress(from)); 
InternetAddress[] address = {new InternetAddress(to)}; 
msg.setRecipients(Message.RecipientType.TO, address); 
msg.setSubject(subject,"iso-8859-9"); 
msg.setSentDate(new Date()); 
msg.setContent(messageText, "text/html;ISO-8859-9"); 
+2

Kurze Frage. Sind Sie sicher, dass das Problem in Ihrem Code liegt, oder hat Ihr E-Mail-Client Schwierigkeiten, dies anzuzeigen? Haben Sie das Problem in verschiedenen Clients reproduziert? –

+0

Welche Zeichen? Können Sie eine Beispiel-E-Mail anzeigen? –

Antwort

1

Es sieht aus wie ISO-8859-9 sollte in der Lage sein, Ihre Turkish letters gut zu handhaben. Ist es möglich, dass der Text irgendwo anders mit der falschen Zeichencodierung dekodiert wird? Wenn der Text der E-Mail beispielsweise Text aus einer Webanfrage, einer anderen E-Mail oder einer Datei enthält, wird möglicherweise der falsche Dekodierer an dieser Stelle angegeben.

Eine Möglichkeit wäre, zu prüfen, den numerischen Wert der Unicode-Codepunkte im String drucken:

for (int idx = 0; idx < str.length(); ++idx) { 
    System.out.println(Integer.toHexString(str.charAt(idx))); 
} 

Wenn Sie fffd sehen, das ist die „Ersatzzeichen“ und bedeutet, dass die Decodierung verwendet werden, wenn Die String wurde erstellt konnte kein Byte (oder Bytefolge) zu einem Zeichen zuordnen. Wenn Sie 3f sehen, ist das ein '?' Zeichen und bedeutet, dass der Text noch weiter zurück beschädigt wurde.