![]() |
Unicode Problem mit Lazarus/Fpc
Hallo,
gibt es für Lazarus sowas wie WideStrings.pas und WideStringUtils.pas aus Delphi? Ich muss aus einer UTF-16 kodierten Datei Strings auslesen und diese dann per InsertMenuW dann in ein Menü einfügen. Leider bekomme ich im Menü nur Müll angezeigt und nicht meine chinesischen Zeichen. Jemand ne Idee? |
AW: Unicode Problem mit Lazarus/Fpc
Verwendet Lazarus/FPC nicht primär UTF-8?
|
AW: Unicode Problem mit Lazarus/Fpc
Darum möchte er ja das UTF-16 konvertieren :wink:
Irgendwie/-wo wird das bestimmt möglich sein. (kann mir nicht vorstellen, daß die sowas vergessen haben) |
AW: Unicode Problem mit Lazarus/Fpc
Die Frage ist erstmal: Wird die Textdati korrekt ausgelesen?
Dann schau mal ob du eine UTF8ToWideString-Funktion findest. |
AW: Unicode Problem mit Lazarus/Fpc
Zitat:
Mir ist nicht mal klar wie ich die Datei lesen soll ohne das ich Datenmüll bekomme. |
AW: Unicode Problem mit Lazarus/Fpc
Zitat:
Free Pascal verwendet das Ansi System Encoding (unter Deutschem Windows meist CP1242 und unter Linux meist UTF-8). Zitat:
Wenn du am Ende auf jeden Fall einen WideString hast, dann machst du z. B. für ein MenuItem einfach folgendes:
Delphi-Quellcode:
Nebenbei: Du könntest an Stelle von WideString auch UnicodeString verwenden (ab Free Pascal 2.4.0). Dieser hat im Gegensatz zu WideString eine Referenzzählung und Copy-On—Write Funktionalität analog zu AnsiString (aka String).
// alle GUI Elemente in Lazarus verwenden UTF-8, also einen WideString in
// UTF-8 umkodieren item.Caption := UTF8Decode(MeinWideString); // für einen Ansi String funktioniert das übrigens ähnlich item.Caption := AnsiToUTF8(MeinAnsiString); // oder item.Caption := SysToUTF8(MeinAnsiString); Gruß, Sven |
AW: Unicode Problem mit Lazarus/Fpc
Abgesehn von den Surrogate-Pairs entspricht kann man ganz einfach WideStringToUtf8 nutzen.
|
AW: Unicode Problem mit Lazarus/Fpc
Zitat:
Die Datei ist im Ini-Format, darum meine Frage nach WideStrings. Da hätt ich einfach mit LoadfromFile die Datei in eine WideString-Liste geladen und mir meine Strings rausgepickt. Gib es da nichts ähnliches? |
AW: Unicode Problem mit Lazarus/Fpc
Du kannst es notfalls über einen Stream in einen WideString laden, dann nach Ansi oder UTF-8 umwandeln und zum Schluß in eine Stringliste.
Aber warum nutzt du denn nicht direkt die WinAPI (davon die Wide-Version nutzen), bzw. kennt FPC/Lazarus denn kein TIniFile, welches diese API nutzt? |
AW: Unicode Problem mit Lazarus/Fpc
Die Ini-Datei ist im UTF-16 Format, darum gibt es mit TIniFile nur Datenmüll.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 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