UTF-8 Tools

Zur Vorstellung von Komponenten und Units für Lazarus
Antworten
Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

UTF-8 Tools

Beitrag von theo »

Habe hier mal meine "gesammelten Werke" zu Unicode und UTF-8 in ein Package gelegt:
http://www.theo.ch/lazarus/utf8tools.zip

Demos sind dabei. Man muss sich aber ein bisschen mit dem Quellcode befassen.
Nur auf die Buttons klicken ist nicht so unterhaltsam.

Es gibt im Wesentlichen:

Eine Unit utf8scanner.pas: Ähnlich wie hier auch schon mal vorgestellt, aber etwas verbessert.
Eine Unit character.pas: Diese funzt ähnlich wie bei D2009. Mit der TCharacter Klasse kann man Informationen über Code Points erhalten.
Eine Unit charencstreams.pas. Dient zum Laden und Speichern von Unicode und Ansi Formaten in z.B. ein TMemo

Falls sich das jemand anschauen möchte und Fragen hat: fragen!

Das Ganze würde ich als Beta bezeichnen. Kann also noch Bugs aufweisen.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: UTF-8 Tools

Beitrag von mschnell »

Klasse !

-Michael

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: UTF-8 Tools

Beitrag von af0815 »

Hallo Theo,

ich bekomme bei den UTF8Tools (aktuell heruntergeladen) folgende Hinweise:

charencstreams.pas(206,21) Warning: Symbol "UTF16ToUTF8" is deprecated: "Use the function in LazUTF8 unit"
utf8scanner.pas(247,13) Warning: Symbol "UTF8CharacterToUnicode" is deprecated: "Use the function in LazUTF8 unit"
utf8scanner.pas(280,34) Warning: Symbol "UnicodeToUTF8" is deprecated: "Use the function in LazUTF8 unit"

ist dir das bekannt, kann man das langfristig ignorieren ?

Andreas (aka af0815)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: UTF-8 Tools

Beitrag von theo »

af0815 hat geschrieben:ist dir das bekannt, kann man das langfristig ignorieren ?

Ist im Moment eine Umleitung auf eben dies.

Z.B: in LCLProc:

Code: Alles auswählen

function UTF16ToUTF8(const S: UTF16String): AnsiString;
begin
  Result := LazUTF8.UTF16ToUTF8(S);
end;   
 


Kann ich bei Gelegenheit mal ändern, aber das ist z. Zt. kein Problem.

P.S. Die Ersetzung ist auch sehr einfach. Es muss nur überall in den "uses" LCLProc durch LazUTF8 ersetzt werden.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: UTF-8 Tools

Beitrag von theo »

OK, ist erledigt.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: UTF-8 Tools

Beitrag von af0815 »

THX Theo,

perfekt. Keine 'Warnings' mehr.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

BrunoT
Beiträge: 9
Registriert: Mi 24. Jun 2015, 21:12
OS, Lazarus, FPC: Mint Linux 17.3 | noch Win10 | L 1.4.4 | FPC 2.6.4
CPU-Target: 64Bit

Re: UTF-8 Tools

Beitrag von BrunoT »

Hallo Theo,

ich möchte unter Linux Ansi - RTF - Dateien schreiben, Ich bekomme aber nur UTF8- Dateien
Im Memo habe ich UTF8- codierten Text und benutze die Unit charencstreams

Code: Alles auswählen

 
       Var
        fCES: TCharEncStream;
.....
        fCES := TCharEncStream.Create;
        fCES.UniStreamType:=ufANSI;
        fCES.UTF8Text:=memo.Text;
        fCES.SaveToFile(SaveDialog1.FileName);
        memo.Lines.LoadFromFile(SaveDialog1.FileName);
 


Was mache ich falsch? :evil:

Danke im Voraus

Code: Alles auswählen

 
for i:=1 to n do
SummeUnsinn := SummeUnsinn + Unsinn[i];
 

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: UTF-8 Tools

Beitrag von theo »

BrunoT hat geschrieben:Was mache ich falsch? :


Es fehlt die gewünschte Zielkodierung.

Code: Alles auswählen

        fCES := TCharEncStream.Create;
        fCES.UniStreamType:=ufANSI;
        fCES.ANSIEnc:='ISO-8859-1'; //<---
        fCES.UTF8Text:=memo.Text


Eine Liste der möglichen Werte erhältst du mit:

Code: Alles auswählen

  GetSupportedANSIEncodings(Memo.Lines);   

BrunoT
Beiträge: 9
Registriert: Mi 24. Jun 2015, 21:12
OS, Lazarus, FPC: Mint Linux 17.3 | noch Win10 | L 1.4.4 | FPC 2.6.4
CPU-Target: 64Bit

Re: UTF-8 Tools

Beitrag von BrunoT »

Danke für die schnelle Antwort :?

Werde ich gleich mal testen.

...

Kaum macht man es richtig, funktioniert es auch!

Code: Alles auswählen

 
for i:=1 to n do
SummeUnsinn := SummeUnsinn + Unsinn[i];
 

Antworten