Verwendet Lazarus/FPC nicht primär UTF-8?
Lazarus verwendet UTF-8.
Free Pascal verwendet das
Ansi System Encoding (unter Deutschem Windows meist CP1242 und unter Linux meist UTF-8).
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?
Wie liest du die Datei denn aus?
Wenn du am Ende auf jeden Fall einen WideString hast, dann machst du z. B. für ein MenuItem einfach folgendes:
Delphi-Quellcode:
// 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);
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).
Gruß,
Sven