Outlook Attachment mit Sonderzeichen

Alles was nicht wirklich Programmierung ist, aber auch nicht Plaudereien im Raucherraum

Moderator: Moderatoren

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Outlook Attachment mit Sonderzeichen

Beitrag von AUGE_OHR »

hi,

wenn ich in Outlook ein Attachment mit Umlauten oder " abspeichere kann ich es nicht öffnen.
OL_Att.jpg
OL_Att.jpg (19.56 KiB) 7819 mal betrachtet
in der CMD Box sehe ich das
CMD_GRU.JPG
CMD_GRU.JPG (28.92 KiB) 7819 mal betrachtet
im Explorer sieht die normal aus und dort kann ich die Datei öffnen.

---

ich "denke" das es UTF8 ist weil es als Attachment einer Email (von einem Apple PC) kam
nun kann ich per activX ein Attachment abspeichern

Code: Alles auswählen

   oAttachment:Item( i ) :SaveAsFile( cOut + cName )
es geht also "nur" um die Frage "wie" ich die Umlaute und " im Filename bearbeiten kann .
habe es mit AT() und STRTRAN() versucht aber da verändert nichts :(

was kann man tun :idea:
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Outlook Attachment mit Sonderzeichen

Beitrag von Tom »

Du hast doch OT4XB. cUTF8ToANSI() wäre die Funktion, die man im "SaveAs" verwenden müsste.
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Outlook Attachment mit Sonderzeichen

Beitrag von AUGE_OHR »

hi,
Tom hat geschrieben: Mi, 07. Okt 2020 8:23 Du hast doch OT4XB. cUTF8ToANSI() wäre die Funktion, die man im "SaveAs" verwenden müsste.
ich habe ot4xb hinzugefügt aber die Datei wir unter Xbase++ gar nicht erzeugt !

Code: Alles auswählen

PROCEDURE SubFolder(oFolder)
LOCAL cName, bOldError
LOCAL oItem, oAttachment,oMailItem
LOCAL n,nMax,i, nCount := 0

   nMax := oFolder:items:count
   FOR n:= 1 TO nMax
      oMailItem := oFolder:Items(n)
      oAttachment := oMailItem:Attachments
      nCount      := oAttachment:Count

      IF nCount > 0
?     SUBSTR( oMailItem:Subject,1,80)

         i := 1
         FOR i := 1 TO nCount
            oItem := oAttachment:Item(i)
            * cName := oItem:DisplayName
            cName := oItem:FileName

            * cName := cUtf8ToAnsi(cName)
            cName := cUtf8ToOem(cName)
            IF FILE("f:\OL1\"+cName)
               FERASE("f:\OL1\"+cName)
            ENDIF
            oItem:SaveAsFile("f:\OL1\"+cName)
         NEXT
      ENDIF
   NEXT

RETURN
SaveAsFile.jpg
SaveAsFile.jpg (34.87 KiB) 7716 mal betrachtet
habe es Original, cUtf8ToAnsi() und mit cUtf8ToOem() versucht
so geht es leider nicht :cry:

anbei die 3 x XppError.Log
ErrorLog.zip
(1.83 KiB) 228-mal heruntergeladen
---

so wird die von Outlook abgespeichert
Demo_UTF8.ZIP
(127.04 KiB) 216-mal heruntergeladen
öffnet mal eine CMD Box und macht ein DIR dann müsstet Ihr das Quadrat sehen im Filenamen
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Outlook Attachment mit Sonderzeichen

Beitrag von AUGE_OHR »

hi,

ich habe nun das zum Debuggen eingefügt

Code: Alles auswählen

PROCEDURE DoTestSign(cName)
LOCAL nSign, i , iMax, aSign := {}

   IF AT("Rot", cName) > 0
ALTD()
     iMax := LEN(cName)
     FOR i := 1 TO iMax
      nSign := ASC( SUBSTR(cName,i,1) )
      IF EMPTY(nSign)
         nSign := 0
      ENDIF
      AADD(aSign, nSign)
     NEXT
     Msgbox( Var2Char(aSign),cName)
   ENDIF
RETURN
OL_Xb_Umlaut.jpg
OL_Xb_Umlaut.jpg (37.83 KiB) 7699 mal betrachtet
alle Nummer > 128 sind "verdächtig" und die 249 erscheint an der Stelle wo IMHO das Problem liegt ... hm :-k
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Outlook Attachment mit Sonderzeichen

Beitrag von Tom »

Welches Outlook ist das, Jimmy? Wenn ich nach "Outlook Dateianhang Umlaute" guhgle, finde ich viele Verweise auf mögliche Fehler in Outlook selbst, je nach Version. Zweiteilige Anführungszeichen (", die auch für Zoll und Bogensekunden als Maßzeichen verwendet werden) sind unter Windows generell kritisch, da sie zugleich verwendet würden, um Datei- und Ordnernamen, die Leerzeichen enthalten, zu umschließen. Ich würde solche Zeichen vor dem Speichern filtern. Typografische Anführungszeichen (einleitend unten, ausleitend oben) sind m.E. überhaupt nicht in Dateinamen abbildbar.
Herzlich,
Tom
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Outlook Attachment mit Sonderzeichen

Beitrag von Marcus Herz »

guhgle
- find ich ein tolles Wort
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Outlook Attachment mit Sonderzeichen

Beitrag von AUGE_OHR »

hi
Tom hat geschrieben: Do, 08. Okt 2020 8:48 Zweiteilige Anführungszeichen (", die auch für Zoll und Bogensekunden als Maßzeichen verwendet werden) sind unter Windows generell kritisch, da sie zugleich verwendet würden, um Datei- und Ordnernamen, die Leerzeichen enthalten, zu umschließen.
über die Anführungs-Zeichen bin ich dann auch gestolpert ...

Code: Alles auswählen

   IF AT(CHR(34),cName) > 0
      cName := STRTRAN(cName,CHR(34),CHR(39))
   ENDIF
ob es sich um ein Outlook Problem handelt kann ich nicht beurteilen.

wenn aber meine App UTF8 "fähig" wäre würde man doch keine Probleme haben, oder :?:
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Outlook Attachment mit Sonderzeichen

Beitrag von Tom »

wenn aber meine App UTF8 "fähig" wäre würde man doch keine Probleme haben, oder
Wenn die Zeichen irgendwo als Limiter verwendet werden, dann doch, ja, ganz unabhängig vom Zeichensatz.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Outlook Attachment mit Sonderzeichen

Beitrag von brandelh »

Tom hat doch im Prinzip die Funktionen genannt, mit denen der Dateiname von UTF-8 nach Ansi umgesetzt werden könnte,
das Problem ist aber, dass man die richtige Stelle bzw. alle nötigen Stellen treffen muss.

Woher weißt du, dass Outlook intern mit den seltsamen Zeichen zurecht kommt ?
Ich selbst steuere Outlook nicht über Xbase++ - aber mit Outlook direkt hab ich jede Menge Probleme ;-)
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Outlook Attachment mit Sonderzeichen

Beitrag von AUGE_OHR »

hi,
brandelh hat geschrieben: Do, 08. Okt 2020 22:25 Tom hat doch im Prinzip die Funktionen genannt, mit denen der Dateiname von UTF-8 nach Ansi umgesetzt werden könnte,
das Problem ist aber, dass man die richtige Stelle bzw. alle nötigen Stellen treffen muss.
die Versuche habe ich unternommen und endeten in 3 x Error.Log aber gemeinsamen Nenner :
kann Datei nicht abspeichern / öffnen mit Xbase++
brandelh hat geschrieben: Do, 08. Okt 2020 22:25 Woher weißt du, dass Outlook intern mit den seltsamen Zeichen zurecht kommt ?
Ich selbst steuere Outlook nicht über Xbase++ - aber mit Outlook direkt hab ich jede Menge Probleme ;-)
wie ich sagte kommt auch der Explorer damit klar und ich kann per DblClick die Datei öffnen.
es könnte also sein das diverse Attachment mit Umlauten auf dem PC sind wo man erst in der CMD Box "sieht" das was nicht stimmt

---

ich hatte die Xbase++ App geschrieben weil die PST so gross geworden ist über die Jahre.
also wollte ich "alte" Attachments "raus-kopieren" und dann löschen.

nun war es wieder mal so weit aber mir viel beim testen auf das es eine Datei zu wenig war :?
ich habe das Attachment dann "in" Outlook als Datei abgespeichert und merkte in der CMD Box das was nicht stimmt.

danach kamen die versuche mit Ot4xb mit den Error.Log ( BEGIN SEQUENCE war dazu abgeschaltet )
ich habe nun eine Lösung mit dem CHR(249) als Marker für STRTRAN()

Code: Alles auswählen

   // per Reference @
   TestforUmlaute( @cName )

PROCEDURE TestforUmlaute(cName)
LOCAL nPosi

   IF CHR(97)+CHR(249) $ cName
      cName := STRTRAN(cName,CHR(97),"ae")
   ENDIF
   IF CHR(65)+CHR(249) $ cName
      cName := STRTRAN(cName,CHR(65),"AE")
   ENDIF

   IF CHR(117)+CHR(249) $ cName
      cName := STRTRAN(cName,CHR(117),"ue")
   ENDIF
   IF CHR(85)+CHR(249) $ cName
      cName := STRTRAN(cName,CHR(85),"UE")
   ENDIF

   IF CHR(111)+CHR(249) $ cName
      cName := STRTRAN(cName,CHR(111),"oe")
   ENDIF
   IF CHR(79)+CHR(249) $ cName
      cName := STRTRAN(cName,CHR(79),"OE")
   ENDIF

  // " Sign not allowed in filename but ' work
   IF AT(CHR(34),cName) > 0
      cName := STRTRAN(cName,CHR(34),CHR(39))
   ENDIF

   // this is need to delete Square in CMD Box
   nPosi := AT(CHR(249),cName)
   IF nPosi > 0
      cName := SUBSTR(cName,1,nPosi-1)+SUBSTR(cName,nPosi+1)
   ENDIF

RETURN
der Marker CHR(249) wird erst am Ende "entsorgt" und ist in diesem Code nur für "einmal" ausgelegt.
ich habe nun Wörter mit mehren Umlauten bekommen und kann es damit optimieren, Danke
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Outlook Attachment mit Sonderzeichen

Beitrag von brandelh »

Ist deine EXE eine ANSI oder OEM EXE ?

Im Zusammenspiel mit anderen Programmen hab ich mit ANSI EXE weniger Probleme als mit OEM EXE, aber bei meinem Test ging beides:

Die ANSI Dateinamen mit Notepad++ nach UTF-8 konvertiert und umbenannt ...
Umlaute.png
Umlaute.png (4.38 KiB) 7328 mal betrachtet
diese PRG ...

Code: Alles auswählen

#include "Gra.ch"
#include "Xbp.ch"
#include "Common.ch"
#include "directry.CH"

procedure main()
   local aDir
*   set charset to ansi
   aDir := directory("*.bmp")
   ? "Start"
   aEval(aDir, {|aD| qout( aD[F_NAME], fexists( aD[F_NAME] ) ) } )
   ? "Ende"
   ?
   inkey(20)
return
findet beide Dateien und liefern fexists() => "J"
egal ob mit oder ohne set charset to ansi
CMD-Box.png
CMD-Box.png (31.9 KiB) 7326 mal betrachtet
wenn aber deine Xbase++ EXE über ActiveX an outlook Befehle übermittelt, darf da keine Zeichensatz Konvertierung stattfinden.
Mit Outlook konnte ich aber keine Datei erzeugen, die solche UTF-8 Dateinamen erzeugt hätte.
Wenn ich Dateien mit Umlauten sende kommen die richtig an und zurück.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Outlook Attachment mit Sonderzeichen

Beitrag von AUGE_OHR »

brandelh hat geschrieben: Fr, 09. Okt 2020 8:34 Ist deine EXE eine ANSI oder OEM EXE ?
habe beides unter Xbase++ ausprobiert, unter harbour mit UTF8

---

DIRECTORY() zeigt dir nur was an aber die Frage ist ob du eine Datei mit solchen Namen öffnen kannst :?:

auf eine Windows PC erzeugte Email mit Umlauten kommt auch so wieder an.
die Emails kamen vom APPLE PC und da scheint was "anders" zu sein.
man "merkt" es aber nicht weil der Explorer ja alles richtig anzeigt und auch öffnen kann.

das Problem sind meine xBase App die nicht mit den Zeichen klar kommen.
unter Windows kann man keine Anführungszeichen "in" einem Dateinamen verwenden ... beim APPLE geht es wohl :roll:
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Outlook Attachment mit Sonderzeichen

Beitrag von brandelh »

wenn fexists() J übergibt, kann fOpen die Datei auch öffnen .... und Umbenennen sollte auch gehen, solange man an dem Dateinamen nix ändert oder konvertiert.

Möglich dass RENAME nicht geht, aber eine Funktion evtl. auch api sollte gehen.
Umbenennen und gut ist
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Outlook Attachment mit Sonderzeichen

Beitrag von AUGE_OHR »

hi,
brandelh hat geschrieben: Fr, 09. Okt 2020 19:29 wenn fexists() J übergibt, kann fOpen die Datei auch öffnen ....
ich habe doch ein Demo File up-ge-loaded. versuche es doch damit mal
brandelh hat geschrieben: Fr, 09. Okt 2020 19:29 und Umbenennen sollte auch gehen, solange man an dem Dateinamen nix ändert oder konvertiert.
es ist ein "ungültiger" Name und in der CMD Box habe ich es nicht geschafft
brandelh hat geschrieben: Fr, 09. Okt 2020 19:29 Möglich dass RENAME nicht geht, aber eine Funktion evtl. auch api sollte gehen.
Umbenennen und gut ist
geht es eben NICHT weil er kein File mit dem Namen findet.
es geht nur im Explorer selbst mit "F2" umbenennen (oder über das Menu)

ich warte auf weitere Email Attachment von meinen Bekannten um die direkt aus dem POP3 Postfach zu holen.
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Outlook Attachment mit Sonderzeichen

Beitrag von brandelh »

Mit der Datei aus deiner ZIP sehe ich das erste im CMD mit DIR
MeinBild1.png
MeinBild1.png (25.98 KiB) 7267 mal betrachtet
und mein Testprogramm findet zwar einen Eintrag, kann diese Datei danach aber NICHT finden.
MeinBild2.png
MeinBild2.png (15.42 KiB) 7267 mal betrachtet
Sehr seltsam ... aber wenn fexists() N zurück gibt, kann Xbase++ tatsächlich nicht auf diese Datei zugreifen
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Outlook Attachment mit Sonderzeichen

Beitrag von brandelh »

Windows Paint App kann die Datei ganz normal öffnen, das Sonderzeichen wird richtig angezeigt (ü)
Gruß
Hubert
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: Outlook Attachment mit Sonderzeichen

Beitrag von HaPe »

Hallo Jimmy,

ich habe die kritische Datei mit ThunderBird an mich selbst versendet.
Alles kein Problem, Thunderbird kann damit umgehen.
IrfanView zeigt die Datei ohne Muckser an wenn es über Total-Commander gestartet wurde :-)
Von CMD aus muss man in IrfanView das "UniCode PlugIn beim Start laden" gesetzt haben.

Keine Ahnung welche Probleme dein Outlook damit hat.
--
Hans-Peter
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Outlook Attachment mit Sonderzeichen

Beitrag von brandelh »

Ich hab mein Testprogramm angepasst und lasse mir eine msgbox() in Ansi zeigen ...

Code: Alles auswählen

#include "Gra.ch"
#include "Xbp.ch"
#include "Common.ch"
#include "directry.CH"

procedure main()
   local aDir
   set charset to ansi
   aDir := directory("*.bmp")
   ? "Start *.BMP"
   aEval(aDir, {|aD| qout( aD[F_NAME], fexists( aD[F_NAME] ) ) } )
   aDir := directory("*.j*")
   ? "Start *.j*"
   aEval(aDir, {|aD| qout( aD[F_NAME], fexists( aD[F_NAME], msgbox("Dateiname: "+chr(13)+aD[F_NAME] )) ) } )
   ? "Ende"
   ?
   inkey(20)
return
dann sehe ich dies:
SeltsamerDateiname.png
SeltsamerDateiname.png (5.63 KiB) 7243 mal betrachtet
bei genauem hinsehen kann man erkennen, dass hier KEIN 'ü' steht, sondern ein 'u' gefolgt von den Pünktchen ...
Ich meine mich zu erinnern, dass es wie bei ´ und `die Technik der alten Schreibmaschine gibt die Sonderstriche zu solchen
Teilen ohne Zeichenvorschub einfach auf dem gleichen Zeichen darstellt.
So sieht das hier für mich aus, wobei Xbase++ damit nicht umgehen kann und 2 Zeichen sieht.

Daher nützt hier aber auch kein UTF-8 Übersetzer, denn das ist kein UTF-8.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Outlook Attachment mit Sonderzeichen

Beitrag von brandelh »

Ich hab auch mal mit PowerBasic 10 versucht, der Compiler unterstützt ANSI und UNICODE ...

Das steht in der Hilfe:

Code: Alles auswählen

Previous versions of PowerBASIC used an ANSI version of DirData which was only 318 bytes in size. 
However, if you utilized the built-in form of DirData, your program should execute correctly under this version with no changes needed.
also das aktuelle nutzt die WSTRING Version ...

Code: Alles auswählen

Win32_Find_Data structure used by the Windows API for this purpose.
TYPE DirData
 FileAttributes        AS DWORD
 CreationTime          AS QUAD
 LastAccessTime        AS QUAD
 LastWriteTime         AS QUAD
 FileSizeHigh          AS DWORD
 FileSizeLow           AS DWORD
 Reserved0             AS DWORD
 Reserved1             AS DWORD
 FileName              AS WSTRINGZ * 260
 ShortName             AS WSTRINGZ * 14
END TYPE
DIR$ sucht also nach dem Namen in Unicode und gibt die Ansi Version zurück, das Ergebnis bleibt aber gleich:

Code: Alles auswählen

#COMPILE EXE
#DIM ALL

FUNCTION PBMAIN () AS LONG
   LOCAL sD  AS STRING
   LOCAL sDD AS WSTRING
   sD  = DIR$("*.J*")
   IF ISFILE(sD) THEN
      MSGBOX("J: "+sD)
   ELSE
      MSGBOX("N: "+sD) ' hier wird immer N angezeigt
   END IF
   sDD = sD ' umsetzen nach UNICODE es gibt keine Unicode Version der Funktion DIR$$
   IF ISFILE(sDD) THEN
      MSGBOX("J: "+sDD)
   ELSE
      MSGBOX("N: "+sDD) ' hier wird immer N angezeigt
   END IF
END FUNCTION 
alles sehr seltsam, aber offensichtlich geht es nicht mit ANSI Programmen.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Outlook Attachment mit Sonderzeichen

Beitrag von brandelh »

Ein letzter Versuch, mit Ersetzung des Namens der Datei:

Code: Alles auswählen

#COMPILE EXE
#DIM ALL

FUNCTION PBMAIN () AS LONG
   LOCAL sD, sUml  AS STRING
   LOCAL sDD AS WSTRING
   LOCAL x AS DWORD
   sD  = DIR$("*.J*")

   IF ISFILE(sD) THEN
      MSGBOX("J: "+sD)
   ELSE
      MSGBOX("N: "+sD)
   END IF

   sUml = CHR$(168) ' "u"+sUml => "ü"

   FOR x = 1 TO LEN(sD)
      IF MID$(sD,x,2) = "u"+sUml THEN
         sD = LEFT$(sD,x-1)+"ü"+MID$(sD,x+2)
      END IF
      ' andere Umlaute hier einbauen
   NEXT
   IF ISFILE(sD) THEN
      MSGBOX("J: "+sD)
   ELSE
      MSGBOX("N: "+sD)
   END IF
   sDD = sD
   IF ISFILE(sDD) THEN
      MSGBOX("J: "+sDD)
   ELSE
      MSGBOX("N: "+sDD)
   END IF
END FUNCTION
für die Anzeige in msgbox() funktioniert das mit dem Ersetzen der Zeichen, aber nicht beim Finden des Dateinamens.

Offensichtlich wird dieser unter einem UNICODE Namen gespeichert, den wir mit ANSI nicht erreichen können.

Für jemand der die API Funktion in einer Sprache nutzt, mit er er den WSTRING Namen direkt erreichen kann,
sollte es ein leichtes sein, diesen in einen ANSI kompatiblen Namen zu übersetzen und die Datei umzubenennen.
Mit PowerBasic könnte ich zwar die Struktur speichern, aber die Befehle für Dateien sind (der Compiler ist auch 10 Jahre alt) alle auf ANSI beschränkt.

Eventuell kann man ja auch Outlook beibringen, nur 7 oder 8 BIT ASCII Dateinamen zu verwenden.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Outlook Attachment mit Sonderzeichen

Beitrag von brandelh »

Also mit diesem PowerBasic 10 Code kann ich die Datei finden, umbenennen (sieht danach gleich aus), wobei ein Ansi ü gespeichert wird.
Danach findet auch Xbase++ die Datei, das Geheimnis liegt in der Verwendung der UNICODE Struktur und der automatischen Konvertierung von PowerBasic 10 ... Ansi nach Unicode speichert ein Ansi ü !

Code: Alles auswählen

#COMPILE EXE
#DIM ALL

FUNCTION PBMAIN () AS LONG
   LOCAL d AS DIRDATA
   LOCAL sD, sUml  AS STRING
   LOCAL sDD AS WSTRING
   LOCAL x AS DWORD

   sD  = DIR$("*.J*" TO d) ' Ansi
   sDD = d.FileName      ' Unicode Name direkt aus der Strukur in eine WString Variable kopieren, dabei wird der Name nicht geändert.

   IF ISFILE(sD) THEN
      MSGBOX("J: "+sD)  
   ELSE
      MSGBOX("N: "+sD) ' nein, noch wird er nicht gefunden
   END IF

   sUml = CHR$(168) ' "u"+sUml => "ü" ' für uns unpassende Unicode Darstellung in ANSI verbessern, hier der Code der Pünktchen.

   FOR x = 1 TO LEN(sD)
      IF MID$(sD,x,2) = "u"+sUml THEN
         sD = LEFT$(sD,x-1)+"ü"+MID$(sD,x+2)
      END IF
      ' andere Umlaute hier einbauen
   NEXT
   IF ISFILE(sD) THEN
      MSGBOX("J: "+sD)
   ELSE
      MSGBOX("N: "+sD) ' Die Datei wurde noch nicht umbenannt, daher immer noch N
   END IF

   IF ISFILE(sDD) THEN ' er findet mit Unicodenamen
      MSGBOX("J: "+sDD) ' JAAAAAA
      NAME sDD AS sD ' umbenennen die Datei in Variable sDD (Unicode Original) gegen sD (Angepaßter ANSI Name mit ü) - bei mir hat es funktioniert.
   ELSE
      MSGBOX("N: "+sDD)
   END IF
END FUNCTION 
Nach diesem Durchlauf, findet auch das Xbase++ Programm die Datei.

Je nach Aufgabe geht es dann weiter, am Besten wäre man könnte Outlook dazu bringen den ANSI Namen zu speichern.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Outlook Attachment mit Sonderzeichen

Beitrag von AUGE_OHR »

hi,

Danke für deine Test Reihe.
bleibt festzuhalten das man unter Xbase++ die Datei NICHT öffnen kann.

ich habe nun weitere Emails vom Apple bekommen mit denen ich es testen kann.
mein Verdacht geht in Richtung Apple Email App welche auch Anführungszeichen "im" Filenamen erlaubt.
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Outlook Attachment mit Sonderzeichen

Beitrag von brandelh »

Ich sag doch, dass der Sender UNICODE Zeichen verwendet, die unter Windows gültig sind, aber eben NUR mit UNICODE angesprochen werden können.

Xbase++ kann kein UNICODE und alle "Übersetzungen" nach ANSI ändern halt den Namen so dass die Datei nicht mehr gefunden werden kann.
Da aber du ja keinem Sender vorschreiben kannst, wie er dir eMails sendet, bleibt nur die Hoffnung dass man Outlook bei SaveAs auf ANSI Namen zwingen kann, ich hab aber nix gefunden ...

Wenn die Änderung des Namens nachträglich erlaubt ist, könnte man eine Funktion bauen die regelmäßig ein Verzeichnis durchsucht und notfalls umbenennt.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Outlook Attachment mit Sonderzeichen

Beitrag von AUGE_OHR »

JA du hat Recht, es ist der Sender welcher im falschen Format sendet.
man bekommt nach dem decodieren die "verlorenen" Zeichen nicht zurück.

diese Info habe ich für Apple Mail gefunden
Bei Apple Mail triffst du die Vorgabe über das Programm Terminal.
Beende Apple Mail, starte Terminal und gib den folgenden Befehl ein:

Code: Alles auswählen

defaults write com.apple.mail NSPreferredMailCharset “ISO-8859-1”
Alternativ kannst du auch Unicode als Codierung wählen. Dazu dient folgender Befehl:

Code: Alles auswählen

defaults write com.apple.mail NSPreferredMailCharset “UTF-8”
Sollte es nötig sein, die Standard-Einstellung wiederherzustellen, verwendest du diesen Befehl:

Code: Alles auswählen

defaults delete com.apple.mail NSPreferredMailCharset
---


das Problem ist nun solche Dateien zu finden. Everything findet solche Dateien nicht.
klar ist nur das es ein Attachment sein muss da man innerhalb von Windows dazu nicht in der Lage ist.

solche Dateien sind wie ein Virus der sich "versteckt" und man ihn nicht los wird :evil:
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Outlook Attachment mit Sonderzeichen

Beitrag von brandelh »

AUGE_OHR hat geschrieben: So, 11. Okt 2020 19:49 das Problem ist nun solche Dateien zu finden. Everything findet solche Dateien nicht.
klar ist nur das es ein Attachment sein muss da man innerhalb von Windows dazu nicht in der Lage ist.
solche Dateien sind wie ein Virus der sich "versteckt" und man ihn nicht los wird :evil:
das stimmt so nicht !

wie ich oben erwähnt habe, findet mein PowerBasic 10 Programm, welches direkt auf die UNICODE Dateinamen zugreift die Datei und kann sie umbenennen.
Ich habe auch deine Datei kopiert im Verzeichnis und das "ü" seltsam gegen ein "_" ausgetauscht und die Datei wurde von Xbase++ gefunden.

Alle Programme (inkl. Windows), welche direkt mit UNICODE (nicht UTF-8) auf das NTFS Dateisystem zugreifen, können die Datei finden (wie auch Paint, Photo etc.) und umbenennen oder öffnen.
Gruß
Hubert
Antworten