FCreate UTF8 oder ISO... [ERLEDIGT]

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

FCreate UTF8 oder ISO... [ERLEDIGT]

Beitrag von Benz »

Hi,

Ich will eine XML-Datei erstellen, die im UTF8-Format oder in einem beliebigen anderen Format erzeugt werden soll.
Dabei habe ich Text in einer Datenbank, der, so viel ich weiß, im ANSI-Format gespeichert wurde.
In meinem Programm habe ich SET CHARSET TO ANSI.
Jetzt habe ich versucht diesen ANSI-Text in die Datei zu schreiben. Leider werden die Sonderzeichen nciht richtig dargestellt.
DAnn habe ich die Funktion von Hubert aus der Wissensbasis benutzt (Str2UTF8()), jetzt werden die SOnderzeichen zwar anders dargestellt, aber immer noch nicht richtig.
Kann es sein, dass die Datei, die ich mit FCreate erzeugt habe im falschen Format vorliegt?
Wie wandle ich denn das Format einer Datei zum Beispile in UTF8 um ?

Viele Grüße
Jens
Zuletzt geändert von Benz am Mi, 17. Jun 2015 13:10, insgesamt 1-mal geändert.
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: FCreate UTF8 oder ISO...

Beitrag von Tom »

Hallo, Jens.

Eine XML-Datei kann relativ beliebig codiert sein. Man kann Windows-Codepages verwenden, meistens aber wird die Datei in UTF-8 sein. Um das zu erreichen, hast Du nach meinem Dafürhalten bereits alles richtig gemacht, aber vermutlich fehlt der Header oder er ist falsch. Dort befindet sich im Attribut "encoding" der Hinweis auf die verwendete Codierung. Bei UTF-8 sollte das so aussehen:

<?xml version="1.0" encoding="UTF-8"?>

Danach beginnt erst das eigentliche Dokument.

Wenn dort nichts steht oder die Zeile fehlt, verwendet der Browser nach meinem Dafürhalten die Standard-Codepage von Windows.

Im Editor siehst Du so oder so falsche Umlaute und Sonderzeichen. Du müsstest einen Editor verwenden, der auch UTF-8 anzeigen kann, z.B. der interne Editor des "Total Commanders" von Christian Ghisler (Shareware, www.ghisler.com). Dort kann man einfach die Codierung umschalten - bei Umschaltung auf UTF-8 müsstest Du dort dann auch die Sonderzeichen sehen.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: FCreate UTF8 oder ISO...

Beitrag von Jan »

Hallo Jens,

Der Satz mach mich stutzig:
Benz hat geschrieben:Dabei habe ich Text in einer Datenbank, der, so viel ich weiß, im ANSI-Format gespeichert wurde.
Wenn da eventuell ASCII drin gespeichert wird, dann könnte daß die Ursache für Deine Probleme sein. DBFNTX ist normalerweise immer ASCII (hab mir aber sagen lassen müssen, daß man das auch auf ANSI umstellen kann). Bei FOXCDX kannst Du das auf ASCII oder ANSI einstellen.

Nur um das mal schnell zu testen: Konvertiere die Strings doch testweise erstmal nach ANSI, und dann nach UTF-8. Also ein Str2UTF8(ConvToAnsiCP(cString)). Wenn da noch mehr Schrott bei rauskommt kannst Du wenigstens den Punkt schon mal abhaken.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: FCreate UTF8 oder ISO...

Beitrag von Benz »

OKay, danke, dann hab ich alles richtig gemacht, ich verwende notepad++ dort kann man das auch umstellen, wie ich danke deines Tipps gerade gesehen habe :)
Danke! :)
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: FCreate UTF8 oder ISO... [ERLEDIGT]

Beitrag von Tom »

@Jens: Super!

@Jan: Wenn die Anwendung mit ANSI arbeitet, sind alle Strings innerhalb der Anwendung immer in ANSI, ganz unabhängig davon, wie sie in den Tabellen gespeichert sind. Eine abermalige ANSI-Konvertierung würde dann Unsinn erzeugen. Du kannst also die Anwendung jederzeit intern nach ANSI umschalten, ohne die Tabellen manipulieren zu müssen. Das hat den Vorteil, dass die Anwendung (bzw. die Laufzeitumgebung) keine Bildschirmausgaben mehr konvertieren muss, dafür aber Tabelleninhalte, die in OEM gespeichert sind. Umgekehrt muss eine OEM-Anwendung immer alles, was mit der GUI interagiert, nach ANSI umwandeln, aber Tabelleninhalte nicht, die in OEM gespeichert sind. Worst case: OEM-Anwendung, die mit ANSI-Tabellen arbeitet. Die muss alles zweimal konvertieren.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: FCreate UTF8 oder ISO... [ERLEDIGT]

Beitrag von Jan »

Hallo Tom,

ja, genau damit hatte ich schon massiv zu kämpfen. Eine OEM-Anwendung, die aber als GUI kompiliert wird, kein Set Charset drin, und die dbf sind teilweise ANSI und teilweise ASCII. Sowas treibt einen dann schon manchmal ganz weit in Richtung Wahnsinn. Deswegen kam ich auf diese Idee.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Antworten