Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   Unicode Problem mit Lazarus/Fpc (https://www.delphipraxis.net/157723-unicode-problem-mit-lazarus-fpc.html)

cookie22 22. Jan 2011 11:17

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?

Bernhard Geyer 22. Jan 2011 11:36

AW: Unicode Problem mit Lazarus/Fpc
 
Verwendet Lazarus/FPC nicht primär UTF-8?

himitsu 22. Jan 2011 11:38

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)

Bernhard Geyer 22. Jan 2011 12:54

AW: Unicode Problem mit Lazarus/Fpc
 
Die Frage ist erstmal: Wird die Textdati korrekt ausgelesen?

Dann schau mal ob du eine UTF8ToWideString-Funktion findest.

cookie22 22. Jan 2011 13:14

AW: Unicode Problem mit Lazarus/Fpc
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1076535)
Die Frage ist erstmal: Wird die Textdati korrekt ausgelesen?

Dann schau mal ob du eine UTF8ToWideString-Funktion findest.

Was bringt mir UTF8ToWideString, ich muss UTF-16 lesen und das selbe an die API Funktion weiter geben.

Mir ist nicht mal klar wie ich die Datei lesen soll ohne das ich Datenmüll bekomme.

JamesTKirk 22. Jan 2011 13:16

AW: Unicode Problem mit Lazarus/Fpc
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1076527)
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).

Zitat:

Zitat von cookie22 (Beitrag 1076526)
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

himitsu 22. Jan 2011 13:53

AW: Unicode Problem mit Lazarus/Fpc
 
Abgesehn von den Surrogate-Pairs entspricht kann man ganz einfach WideStringToUtf8 nutzen.

cookie22 22. Jan 2011 13:58

AW: Unicode Problem mit Lazarus/Fpc
 
Zitat:

Wie liest du die Datei denn aus?
Das ist hier die frage die ich mir stellen, bis jetzt irgendwie gar nicht.

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?

himitsu 22. Jan 2011 14:02

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?

cookie22 22. Jan 2011 14:06

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.
Seite 1 von 2  1 2      

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