Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   vcf mit Delphi erstellt, Fehler Umlaute (https://www.delphipraxis.net/205988-vcf-mit-delphi-erstellt-fehler-umlaute.html)

kdf 6. Nov 2020 17:18

vcf mit Delphi erstellt, Fehler Umlaute
 
Hallo,

ich habe eine .vcf 2.1 Datei mit Delphi 6 alternativ mit Delphi Seattle erstellt, indem ich die Datei in einem TMemo zusammenstelle und dann mit SaveToFile auf der Platte speichere oder ggf. mir selbst als E-Mail Anhang sende.

Es geht nur um die Umlaute.
Folgendes passiert:

Datei.vcf öffnen mit Doppelklick öffnet Kontakte von Outlook. Straße ist richtig.
Sende die Datei als E-Mail Anhang an mich selbst. Speichere die Datei mit dem Samsung E-Mail-Client in den Kontakten. Straße wird zu Stra?e.
Importiere die Datei im Browser unter Windows in Google.com - Kontakte. Straße ist richtig.
Wenn die Kontakte synchronisiert wurden, ist Straße in den Kontakten des Handys richtig.

Jemand eine Idee, wie man das richtig hinbekommt?

Gruß
K.-D.

Olli73 7. Nov 2020 00:21

AW: vcf mit Delphi erstellt, Fehler Umlaute
 
Hast du denn das korrekte Encoding (CHARSET=) in der VCF-Datei mit angegeben und welches Encoding hat die Datei überhaupt; und ggf. mit oder ohne BOM?

Fritzew 7. Nov 2020 10:24

AW: vcf mit Delphi erstellt, Fehler Umlaute
 
Hier mal ein Auszug aus der RFC 6350 für vCard


Zitat:

3.1. Charset

The charset (see [RFC3536] for internationalization terminology) for
vCard is UTF-8 as defined in [RFC3629]. There is no way to override
this. It is invalid to specify a value other than "UTF-8" in the
"charset" MIME parameter (see Section 10.1).
Das bedeutet Du musst Deine VCF Datei alsUTF8 speichern.

Olli73 7. Nov 2020 11:15

AW: vcf mit Delphi erstellt, Fehler Umlaute
 
Soweit ich weiß gilt das mit utf-8 für Version 3. Er nutzt aber Version 2.1. Dort muss man charset angeben.

Fritzew 7. Nov 2020 11:29

AW: vcf mit Delphi erstellt, Fehler Umlaute
 
Zitat:

Zitat von Olli73 (Beitrag 1476868)
Soweit ich weiß gilt das mit utf-8 für Version 3. Er nutzt aber Version 2.1. Dort muss man charset angeben.

Uups, ja hatte ich verdrängt. Stimmt

kdf 8. Nov 2020 18:25

AW: vcf mit Delphi erstellt, Fehler Umlaute
 
Liste der Anhänge anzeigen (Anzahl: 3)
hier eben die Dateien.

Ob in der vcf CHARSET=UTF-8 steht, oder nicht, hat keine Auswirkung.

Wurde mit Samsung Client aus Anhang in Kontakte gespeichert (testvcf2.png).

Die Datei "testvcf3.png" ist das Resultat, wenn die Datei "testvcf1.jpg" unter Windows im Browser auf der Seite gmail.com/kontakte importiert wurde und die ganz normale automatische Syncronisation durchgeführt wurde.

K.-D.

kdf 10. Nov 2020 08:19

AW: vcf mit Delphi erstellt, Fehler Umlaute
 
Habe ein ISDN Telefon Gigaset DX800A. Bei dem kann man die Kontakte auch mit VCF importieren. Da gibt es das gleiche Problem mit den Umlauten. In Firebird habe ich iso8859-1 eingestellt.

Die Lösung des Problems sieht so aus:

Memo1.Lines.SaveToFile(SaveDialog1.FileName,TEncod ing.UTF8);

K.-D.

Olli73 10. Nov 2020 08:23

AW: vcf mit Delphi erstellt, Fehler Umlaute
 
Ich habe ja gleich gefragt
Zitat:

... welches Encoding hat die Datei überhaupt ... ?

kdf 10. Nov 2020 10:13

AW: vcf mit Delphi erstellt, Fehler Umlaute
 
Kommando zurück.

Funktioniert doch nicht. Beim ISDN Telefon funktioniert das so, Google weigert sich die Datei einzulesen.

Olli73 10. Nov 2020 10:26

AW: vcf mit Delphi erstellt, Fehler Umlaute
 
Mal mit und ohne BOM probiert?

kdf 11. Nov 2020 16:44

AW: vcf mit Delphi erstellt, Fehler Umlaute
 
BOM?

Wie mache ich das?

himitsu 11. Nov 2020 18:32

AW: vcf mit Delphi erstellt, Fehler Umlaute
 
Bei Google suchenByte Order Mark

SaveToFile mit TEncoding.UTF8 speichert das UTF-8-BOM in der Datei.

kdf 13. Nov 2020 10:02

AW: vcf mit Delphi erstellt, Fehler Umlaute
 
Zitat:

Zitat von himitsu (Beitrag 1477161)
Bei Google suchenByte Order Mark

SaveToFile mit TEncoding.UTF8 speichert das UTF-8-BOM in der Datei.

Ja, das funktioniert mit vcf definitiv nicht.

Kommt die Meldung z.B. bei Google:

BEGIN:VCARD kann nicht gespeichert werden ...

Gibt es denn eine Funktion, die das BOM wegschneidet?

Olli73 13. Nov 2020 10:10

AW: vcf mit Delphi erstellt, Fehler Umlaute
 
TStringList.WriteBom := true/false

Bbommel 13. Nov 2020 10:29

AW: vcf mit Delphi erstellt, Fehler Umlaute
 
Zitat:

Zitat von Olli73 (Beitrag 1477258)
TStringList.WriteBom := true/false

Etwas OT: weiß jemand, seit wann es das gibt? Ich habe nämlich vor mittlerweile einigen Jahren extra eine abgeleitete Klasse von StringList gebasteltet mit einer eigenen SaveToFile-Methode, um das BOM abschalten zu können. Das muss allerdings so grob zu Delphi 2009-Zeiten gewesen sein, als dieses ganze TEncoding.UTF8 noch recht neu war. Ich habe dann nie mitbekommen, dass man das mittlerweile offenbar einfach abschalten kann. Oder war das "schon immer" so und ich habe es damals komplett übersehen?

Hier mitzulesen bildet auf jeden Fall auch am Rande immer mal wieder weiter. :-)

kdf 13. Nov 2020 14:13

AW: vcf mit Delphi erstellt, Fehler Umlaute
 
in seattle ist es schon drin.

Ich habe mal eben ein paar vcf mit Umlauten mit writeBOM := false generiert.

Ich konnte die Dateien problemlos unter contacts.gmail.com einlesen;
via Mail an mich selbst schicken und unter Samsung E-Mail speichern;
im Telefonbuch des Gigaset DX800 einlesen.

Die Umlaute wurden immer richtig dargestellt.

Das Problem scheint damit gelöst zu sein.

Danke für die Hilfe.

Redeemer 13. Nov 2020 18:27

AW: vcf mit Delphi erstellt, Fehler Umlaute
 
Zitat:

Zitat von Bbommel (Beitrag 1477260)
Etwas OT: weiß jemand, seit wann es das gibt?

OH sagt XE.
In 2010 fehlt es auf jeden Fall.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz