Ankündigung

Einklappen
Keine Ankündigung bisher.

UTF8-Codierte CSV per Mail versenden

Einklappen
X

UTF8-Codierte CSV per Mail versenden

Einklappen
  • Filter
  • Zeit
Alles löschen
neue Beiträge

  • UTF8-Codierte CSV per Mail versenden

    Hallo,

    ich möchte den Result eines Datenbank Selects täglich als CSV Datei an eine eMail versenden und bin quasi fertig:

    Leider scheitere ich an den Basics, da meine Texte sich scheinbar nicht UTF8 codiert in die CSV Datei schieben lassen:

    Code:
    import de.uplanet.lucy.server.mail.GroovyMailBuilder
    import de.uplanet.scripting.groovy.util.Safely
    def conn = g_dbConnections.systemConnection
    def stmt, rs = null
    
    /* Temporary file for the attachment */
    File fileAttachment = File.createTempFile("export",".csv")
    fileAttachment.deleteOnExit()
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileAttachment), "UTF-8"))
    
    try
    {
       stmt = conn.prepareStatement("SELECT .......")
       rs = stmt.executeQuery()
    
       //Kopfzeile
       writer.append("Straße;PLZ ;Stadt\n")
    
       while (rs.next())
       {
          writer.append( rs.getString(1) +";")
          writer.append( rs.getString(2) +";")
          writer.append( rs.getString(3) +"\n")
       }
    }
    finally
    {
       rs = Safely.close(rs)
       stmt = Safely.close(stmt)
       writer.flush()
       writer.close()
    }
    
    def mail = new GroovyMailBuilder().composeMail {
    headers = ["Importance": "High","X-Priority": "1"]
    
    from = "sender@example.org"
    to = ["recipient-1@example.org", "recipient-2@example.org"]
    subject = "A very Groovy Mail-Test"
    contentType = "text/html; charset=UTF-8"
    
    body << """<html>
    <body>
    <p>Täglicher Export</p>
    </body>
    </html>"""
    
    attachFile(file: fileAttachment, name: "export.csv", contentType: "text/csv")
    }
    
    mail.drop()
    Der Body wird korrekt in UTF-8 in der eMail angezeigt, in der CSV Datei bekomme ich jedoch beispielsweise:

    Straße;PLZ;Stadt
    Emanuel-Leutze-Str.;40547;Düsseldorf

    Was mache ich beim UTF8 schreiben in die Datei falsch?

  • #2
    Ich glaube ich hatte mal ein ähnliches Problem. Intrexx speichert Groovy Files mit der Kodierung ANSI. Versuch mal, das Groovy File mit einem externen Editor (z.B. Notepad / Notepad++, VS Code - mein Favorit) zu öffnen (direkt über das temporäre Arbeitsverzeichnis oder 'Extras > Optionen > Allgemein > Editoreinstellungen') und mit Kodierung UTF-8 zu speichern. Wär super, wenn du dann kurz Rückmeldung geben könntest, ob dein Problem damit gelöst ist.

    Kommentar


    • #3
      Hallo Tobiz,

      danke für den Hinweis. Mir ist gerade aufgefallen, dass scheinbar nur in Excel die Zeichenkodierung nicht richtig interpretiert wird.

      Wenn ich die Datei mit einem Texteditor öffne (selbst der Windows Standard Editor), dann habe ich meine Sonderzeichen.

      Da hab ich also einen Fehler gesucht, den es gar nicht gab :-D

      Vielleicht nützt jemanden ja der Post als Usecase.

      Liebe Grüße

      Kommentar

      Lädt...
      X