![]() |
Delphi-Version: 12 Athens
TIniFile speichert manchmal UTF8 statt ANSI
Liste der Anhänge anzeigen (Anzahl: 3)
Hallöle...8-)
Vieleicht habe ich es noch nicht bemerkt und es ist schon immer so...:zwinker: Ich habe eine TIniFile wo das letzte Layout (Name) gespeichert ist. Beim Start holt sich die Anwendung das letzte Layout und zeigt es an. Beim Beenden wird das letzte Layout über die Ini gespeichert. Seit einiger Zeit, am Quellcode ist für das Laden/Speichern nichts geändert worden, kann die Anwendung das Layout nicht laden. Analyse: * Die Ini Datei ist manchmal UTF8, manchmal ANSI...wieso? Ich tippe darauf, daß der Pfad zum Layout nicht richtig umgewandelt wird und der Pfad ungültig ist. :cry: * Ändere ich das Layout manuell, wird das Layout (mit Umlauten) nicht geladen. (Bild3) Frage: * Hat sich bei TIniFile von D11.2 zu D12 etwas geändert? * Früher war TIniFile ausschließlich ANSI? * wenn der Pfad "_Default" oder den Unterstrich enthällt wird die Datei zu UTF8. Den Unterstrich gibt aber im ANSI? (#95) Könnte mir das mal jemand erklären? :wink: Danke... PS: Ich habe auch TMemIniFile ausprobiert. Mußte ich gleich wieder zurücknehmen... Fehler auf verschiedenen Systemen (nicht alle): "Keine Zuordnung für Unicode-Zeichen in der Multibyte-Zielcodeseite vorhanden" |
AW: TIni speichert manchmal UTF8 statt ANSI
.. auch ersten Bild sind im Pfad "_" vorhanden (_Layout) - das ini ist da aber weiterhin im ANSI Format.
Ob es an den "_" liegt wage ich daher zu bezweifeln. Grüße Klaus |
AW: TIni speichert manchmal UTF8 statt ANSI
Ist vielleicht interessant:
![]() |
AW: TIni speichert manchmal UTF8 statt ANSI
welches TIni?
TMemIniFile, TIniFile, ... Wo? (Windows) Und ist es wirklich UTF-8? Es soll UTF-8 ohne BOM sein und im Bereich von ASCII (#0-#127) sind ANSI und UTF-8 identisch. TIniFile definitiv nicht, denn die WinAPI kann ausschließlich ANSI und UTF-16 (Unicode). Aber eine "Erkennung" könnte es ohne BOM teilweise für UTF-8 halten, obwohl es ANSI ist, z.B. wenn keine Umlaute (Ä) drin vorkommen. |
AW: TIni speichert manchmal UTF8 statt ANSI
Wird die Datei wirklich zu UTF bzw. Ansi oder umgekehrt, oder sagt nur die Heuristik von Notepad++, dass das so sei? Sieht man in einem HexEditor ein BOM, oder fängt das direkt mit den Textdaten an?
TIniFile basiert meines Wissens nach immer noch auf der Windows-API, die nur ANSI kann, was dann zu Problemen mit Umlauten führen kann. TMemIniFile ist eine eigene Delphi-Implementierung, die auf TStringList basiert, und die dann entsprechend verschiedene Kodierungen kann. Dein Fehler bei der Umstellung auf TMemInifile dürfte auch auf den Umlaut zurückzuführen sein. Wenn der als ANSI codiert ist (also ein Byte), aber TMemInifile versucht, die Datei als UTF-8 zu interpretieren (da bräuchte ein "ä" zwei Byte), geht das halt schief. Abhilfe: Bein Create (oder beim Lesen?) explizit die Text-Kodierung angeben, und nciht auf den Standard (iirc UTF-8) vertrauen. |
AW: TIni speichert manchmal UTF8 statt ANSI
Zitat:
Zitat:
Das gemeine ist halt, dass das Default-Encoding unter Windows ANSI ist, sonst aber UTF8. Deswegen würde ich sowas immer explizit festlegen und gegebenenfalls die Dateibestände normalisieren. |
AW: TIni speichert manchmal UTF8 statt ANSI
Zitat:
Zitat:
|
AW: TIniFile speichert manchmal UTF8 statt ANSI
Für das (nicht abwärtskompatible) Update: Benutze in der neuen Version einen anderen Dateinamen für die Ini. Wenn beim Laden die neue Datei da ist, wird diese mit der neuen Lade-Routine geladen. Ansonsten Fallback auf die alte Methode mit der alten Datei.
Beim Speichern ggf. die alte Datei löschen. |
AW: TIniFile speichert manchmal UTF8 statt ANSI
Zitat:
|
AW: TIni speichert manchmal UTF8 statt ANSI
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz