Domino 9 und frühere Versionen > ND8: Entwicklung

Email-Kodierung und Umlaute

<< < (3/3)

pram:
@Peter: Ich hab nochmal nachgedacht, eigentlich sollte eine der beiden Zeilen reichen:
   Call mime.DecodeContent
   Call mime.EncodeContent (ENC_NONE)
da sie in meinen Augen äquivalent sind.

Zu deimen Ersetzungsproblem: Notes macht da oft ganz komische Sachen und ehandelt bestimmte Zeichen bei bestimmten Ländereinstellungen "gleich":
In (deutschen) Ansichten wird z.B. "ue" und "ü" gleich behandelt.
(Mach mal eine kategorisierte Ansicht mit dem Eintrag "Müller" und "Mueller" => sie landen in der gleichen Kategorie, auch ein Lookup nach "Müller" liefert u.U. "Mueller" als Treffer und umgekehrt)

Beim Stringvergleich habe ich ebenso schon solche Dinge erlebt: z.B. ƒ = f

Und seit ich das gelesen habe: http://atnotes.de/index.php/topic,49757.msg319797.html#msg319797
mache ich Vergleiche an kritischen Stellen zeichenbasiert mit Asc/Uni (meist geht es um das Herausfiltern von Sonderzeichen)

Ich denke dass bei deinem Replace auch dieses "Feature" zugeschlagen hat.

Gruß
Roland

Peter Klett:
Ja, Du hast Recht, nur mit DecodeContent bekomme ich das gleiche Resultat.

Das mit den Übersetzungen habe ich auch schon festgestellt. Mit norwegischer Ländereinstellung wird aa (was ja recht weit vorne im Alphabet steht) stumpf in å übersetzt, und das ist das drittletzte Zeichen (und so wird es hier auch einsortiert, im Gegensatz zu einem deutschen Umlaut, denn å ist kein Umlaut, sondern ein eigenständiger Buchstabe). Beim ersten mal habe ich mir einen Wolf nach einem Dokument gesucht, dessen Kategorie in der Ansicht mit Aa anfing (z.B Aachen) ...

Wer das gebaut hat, hat sich bestimmt was dabei gedacht, ich möchte nur nicht wissen, was  :(

hampa:
Hallo zusammen

Ich habe mich heute morgen gleich ans Umsetzen des Tipps von Roland gemacht und meinen Java-Code geöffnet und... ich war schon einwenig enttäuscht. Entäuscht deshalb, weil ich im Code diese beiden Befehl vorfand. Ich füge mal den Code ein, vielleicht sieht jemand den Fehler der dazu führt, dass auch =FC kein ü wird.  :-:


--- Code: ---try {
// Parse the XML body of the mail message.
// Do not convert MIME to rich text
s.setConvertMIME(false);
MIMEEntity mime = docSourceEmail.getMIMEEntity();
if (mime != null) {

// DecodeContent
mime.decodeContent();
       mime.encodeContent(MIMEEntity.ENC_NONE);
         
// If multipart MIME entity
if (mime.getContentType().equals("multipart")) {

          // Read content of each child entity
         MIMEEntity child1 = mime.getFirstChildEntity();
         if (child1 != null) {
sTmpBodyText = child1.getContentAsText();
         }
} else {
// If not multipart, just print content
sTmpBodyText = mime.getContentAsText();
}
} else {
throw new ParserException("[parseXMLBody] Keine gültige XML-Message vorhanden.");
}

// <br>-Varianten durch CRLF ersetzen
sBodyText = sTmpBodyText.replaceAll("<br>|<br\\>|<br \\>", "\r\n");

// Aus dem RichTextFeld die XML-Message "herausschälen"
// Bestehende Item "BodyText" löschen
if (docSourceEmail.hasItem("BodyText")) {
docSourceEmail.removeItem("BodyText");
}

// Neues NotesItem auf dem Dokument erstellen.
RichTextItem inBodyText = docSourceEmail.createRichTextItem("BodyText");

// Start und End-Position der XML-Message feststellen
logger.debug("Unformatted Text from Body: " + sBodyText);
int iStartPos = sBodyText.indexOf("<CustomerEmail>");
logger.debug("[SMCUtils.parseXMLBody] Startposition <CustomerEmail>: " + iStartPos);
int iEndPos = sBodyText.indexOf("</CustomerEmail>");
logger.debug("[SMCUtils.parseXMLBody] Startposition </CustomerEmail>: " + iEndPos);

// Prüfen, ob eine gültige XML-Message vorhanden ist.
if ((iStartPos < 0 || iEndPos < 0) || (iStartPos > iEndPos)) {
throw new ParserException("[parseXMLBody] Keine gültige XML-Message vorhanden.");
}

// XML-Message aus dem gesamten Body herausschneiden
String sTmpBodyXMLMessage = sBodyText.substring(iStartPos, iEndPos + 16);
logger.debug("[SMCUtils.parseXMLBody] XML-Message (Trim): " + sTmpBodyXMLMessage);

// XML-Message in neues Item abfüllen
inBodyText.appendText(sTmpBodyXMLMessage.trim());
// Document speichern
docSourceEmail.save();
                               .......

--- Ende Code ---

Gruss und Dank
Hampa

pram:

--- Zitat von: hampa am 14.03.12 - 10:32:08 ---Hallo zusammen

Ich habe mich heute morgen gleich ans Umsetzen des Tipps von Roland gemacht und meinen Java-Code geöffnet und... ich war schon einwenig enttäuscht. Entäuscht deshalb, weil ich im Code diese beiden Befehl vorfand. Ich füge mal den Code ein, vielleicht sieht jemand den Fehler der dazu führt, dass auch =FC

--- Ende Zitat ---
Aber klar doch....  ;D

--- Code: ---....
          // Read content of each child entity
         MIMEEntity child1 = mime.getFirstChildEntity();
         if (child1 != null) {
sTmpBodyText = child1.getContentAsText();
         }

--- Ende Code ---
child1 will auch noch dekodiert werden.

Gruß
Roland

hampa:
Hallo Rolaaaaaaand !


--- Zitat von: pram am 14.03.12 - 12:50:58 ---Aber klar doch....  ;D
child1 will auch noch dekodiert werden.

--- Ende Zitat ---

Wenn du einen Frau wärst würde ich dich auf der Stelle küssen!  :-*
Es funktioniert! Und wie! Jipiii!

Es hat sich mir aus dem Help vom Notes-Designer nicht erschlossen, dass jede MIMEEntity gesondert decoded werden will. Aber jetzt weiss ich's besser.  ;D

Vielen, vielen herzlichen Dank

Hampa

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln