Erkennen ob das Zeichen ein UTF8 Zeichen ist

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6857
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: Erkennen ob das Zeichen ein UTF8 Zeichen ist

Beitrag von af0815 »

Auch ich stehe zeitweise am Schlauch mit dem was ist jetzt utf-x und was jetzt nicht.

Ich wollte eigentlich einen Artikel darüber für die LazInfos machen, bin aber daraufgekommen, das ich die ganze Sache erst mal selbst verstehen muß und das ist bis jetzt noch nicht ausreichend der Fall.

Dank der Hilfe von theo, habe ich jetzt einmal Code, wo ich wirklich sehen kann was da intern abgeht. Vor allen, da ich sowohl in Windows (Vista64 & XP) als auch Linux (Debian & Ubuntu) arbeiten muß. Zusätzlich lerne ich griechisch und schon von daher bin ich mit der Materie konfrontiert. Alle Textdateien müssen bei mir derzeit zwischen den Systemen gewandelt werden um dort brauchbar zu sein. Dank theo geht das relativ einfach jetzt, nur ich will selbst mehr Komfort und Verständnis.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Erkennen ob das Zeichen ein UTF8 Zeichen ist

Beitrag von Christian »

Das was Pluto immer machen will ist nunmal nicht unbedingt Einsteiger tauglich, ich bin mit der altuellen Implementierung auch durchaus zufrieden. Und verstehe auch nicht was af da immernoch dran rummäkeln muss. Gibts von dir schon Patches oder eine Idee für eine "ordentlichere" Unicode implementierung ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

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: Erkennen ob das Zeichen ein UTF8 Zeichen ist

Beitrag von mschnell »

theo hat geschrieben:Mit der aktuellen Version lässt sich gut arbeiten.
Klar. Das tue ich auch mit Begeisterung.

Allerdings ist das nur wahr, wenn man sich ernsthaft mit Unicode auseinandersetzt. Und das von jedem Einsteiger zu verlangen, der ein Programm für sich selbst oder nur für den "deutschen Markt" schreiben will ist, finde ich, nicht statthaft. Und dass es nicht anders geht ist offensichtlich falsch: Mit der alten Version von Lazarus konnte man prima alles machen was der besagte Einsteiger will, ohne sich in irgendeiner Weise um Unicode zu kümmern.

-Michael
Zuletzt geändert von mschnell am So 4. Jan 2009, 13:10, insgesamt 1-mal geändert.

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: Erkennen ob das Zeichen ein UTF8 Zeichen ist

Beitrag von mschnell »

Christian hat geschrieben: Gibts von dir schon Patches oder eine Idee für eine "ordentlichere" Unicode implementierung ?
Lazarus alleine kann da wenig machen, FPC muss das erstmal unterstützen (Obwohl ich die Entscheidung, die LCL nur mit UTF8-API zur Verfürgung zu stellen, nicht gut finde, besser wäre gewesen, den Benutzer durch eine grundsätzliche Konfiguration zwischen UTF-8 und Widestring als LCL-API wählen zulassen.)

Zukunft: siehe Englisches FreePascal Forum. Einserseits ist die Delphi 2009 kompatible Methode mit Strings, die die interne Kodierung kennen in Vorbereitung , andererseits arbeitet da jemand an einer Lösung, die weniger tief in die interne String-Bearbeitung eingreift und bessere Performance bei der "normalen" Stringverarbeitung verspricht:

-Michael
Zuletzt geändert von mschnell am So 4. Jan 2009, 13:14, insgesamt 3-mal geändert.

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: Erkennen ob das Zeichen ein UTF8 Zeichen ist

Beitrag von mschnell »

theo hat geschrieben:Was ist ein UTF8 Zeichen??
Genau das ist das Problem :) :) :) :) :) :) .

Eigentlich will man mit Strings arbeiten, ohne genau wissen zu müssen, was ein Zeichen ist. :twisted:

Bei "ANSI-Zeichen" geht das fast immer, bei UTF-16 (Widestring) geht das auch fast immer, bei UTF-8 geht das fast nie. ("Fast immer" heißt hier: Einsteiger können damit alles machen, was sie üblicherweise wollen. Experten, die Programme schreiben, die für unterschiedliche Sprachen ausgelegt sind, oder Texte in besonderen Sprachen bearbeiten sollen, müssen natürlich tiefer schürfen. Für diese gilt dann: ANSI geht fast nie vernünftig. Somit ist der von Lazarus Umstieg auf Unicode natürlich absolut gerechtfertigt. )

Als Programmierer hofft man, dass der Compiler weis, was ein Zeichen ist, wenn man ihm sagt, welche Kodierung man meint. Tut er aber nicht. Für den aktuellen FPC ist der Typ ANSIString und UTF8String identisch :( .

Logischerweise gibt es auch keinen Typ UTF8Char :evil: .

-Michael

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Erkennen ob das Zeichen ein UTF8 Zeichen ist

Beitrag von pluto »

Was ist ein UTF8 Zeichen??
Gute frage aber ich würde sagen ein Umlaut währe ein UTF8 Zeichen. Sonderzeichen glaube ich auch. Sowas halt
Und Pluto ist sicherlich nicht der unerfahrenste aller Pascal Einsteiger
Was genau meinst du damit ? Ich steige nicht mehr in Pascal ein sondern ich benutzte es. Eingestiegen bin ich da schon vor ca 10 bis 12 Jahren. Es gibt zwar auch bereiche mit den ich mich noch nicht beschäftigt habe aber ein Einsteiger bin ich so gesehen eigentlich nicht mehr auch wenn ihr das ab und an von mir denken mögt. Wenn ihr so wollt bin ich ein sehr sehr Fort geschrittener Einsteiger. Ich kenne "Object Pascal" bzw. die Lazarus Umgebung inzwischen recht gut.

Ich bin auch in der Lage fremdem Code zu verstehen. Zwar gibt es im Lazarus-Soruce Code stellen die mich recht verwundern, aber ich verstehe ihn.
Z.B. habe ich wie gesagt das mit dem UTF8Char aus SynEdit.

Ich werde das Problem auch ersteinmal nicht weiter beachten bis mir eine bessere/andere Lösung eingefallen ist. Die auch was taugt. Schade das ihr das Problem anscheint nicht gesehen habt, was ich meine. Aber nun gut. Es ist so wie es ist.
MFG
Michael Springwald

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Re: Erkennen ob das Zeichen ein UTF8 Zeichen ist

Beitrag von creed steiger »

pluto hat geschrieben:
Was ist ein UTF8 Zeichen??
Gute frage aber ich würde sagen ein Umlaut währe ein UTF8 Zeichen. Sonderzeichen glaube ich auch. Sowas halt
Falsch.
Das hat mit Umlaut oder Sonderzeichen gar nix zu tun.
Ein UTF 8 Zeichen ist ein Zeichen das in UTF 8 kodiert ist.
Genauso wie ein ISO schlagmichtot nach der ISO kodiert ist.

siehe:
Vergleichstabelle:
ftp://ftp.unicode.org/Public/MAPPINGS/I ... 8859-1.TXT" onclick="window.open(this.href);return false;
und
http://de.selfhtml.org/inter/unicode.htm" onclick="window.open(this.href);return false;
siehe angehängtes Beispiel
Dateianhänge
uni.tar.gz
Unicode
(94.71 KiB) 95-mal heruntergeladen
Zuletzt geändert von creed steiger am So 4. Jan 2009, 15:18, insgesamt 1-mal geändert.

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

Re: Erkennen ob das Zeichen ein UTF8 Zeichen ist

Beitrag von theo »

pluto hat geschrieben:Schade das ihr das Problem anscheint nicht gesehen habt, was ich meine. Aber nun gut. Es ist so wie es ist.
Ich sehe das Problem schon, und ich habe auch versucht, dir auf die Sprünge zu helfen. Leider ignorierst du das immer.

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

Re: Erkennen ob das Zeichen ein UTF8 Zeichen ist

Beitrag von theo »

@mschnell: Was kümmerst du dich eigentlich immer um die Einsteiger? Die sind meistens viel weniger holzköpfig als bärtige Delphi Konvertiten. ;-)

Der Fall an dem du alles aufhängst mystring:='ä'; kommt doch in der Praxis kaum vor und lässt sich auch durch Replace oder ähnliches lösen.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Erkennen ob das Zeichen ein UTF8 Zeichen ist

Beitrag von pluto »

Ich verstehe einfach nicht warum jetzt wieder ein solange Thread sich entwickelt was im Grunde nichts mit der Frage zu tun hat. Also lassen wir es bleiben. Von mir aus kann Monta diesen Thread schließen oder löschen. Ich habe meine lehre hieraus gezogen.
Ich werde mein Problem wohl alleine lösen müssen :( Da ihr das Problem anscheint nicht versteht oder verstehen wollt. Ich möchte jetzt wirklich nicht wieder über UTF8 oder Unicode diskutieren. Das habe ich auch gar nicht gefragt. Ich werde meine Fragen in dieser Richtung in Zukunft woanders stellen.
MFG
Michael Springwald

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

Re: Erkennen ob das Zeichen ein UTF8 Zeichen ist

Beitrag von theo »

pluto hat geschrieben:Da ihr das Problem anscheint nicht versteht oder verstehen wollt. Ich möchte jetzt wirklich nicht wieder über UTF8 oder Unicode diskutieren. Das habe ich auch gar nicht gefragt.
Doch das hast du gefragt (steht ja schon im Titel) und darum geht's bei deinem Problem auch. Du willst es nur nicht wahrhaben.

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: Erkennen ob das Zeichen ein UTF8 Zeichen ist

Beitrag von mschnell »

pluto hat geschrieben:Was genau meinst du damit ? Ich steige nicht mehr in Pascal ein
Genau das meinte ich. Du arbeitest schon eine ganze Zeit mit Pascal und trotzdem hast Du massive Schwierigkeiten beim umstieg von der alten (ANSI-) auf die neue (Unicode-) Version von Lazarus. Was sollen da erst echte Einsteiger machen ? (Am besten Delphi, C# oder Java :evil: )

-Michael

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: Erkennen ob das Zeichen ein UTF8 Zeichen ist

Beitrag von mschnell »

theo hat geschrieben:Die sind meistens viel weniger holzköpfig als bärtige Delphi Konvertiten. ;-)
Woher weißt Du, dass ich einen Bart habe ?

-Michael

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: Erkennen ob das Zeichen ein UTF8 Zeichen ist

Beitrag von mschnell »

pluto hat geschrieben:was im Grunde nichts mit der Frage zu tun hat.
Worum ging es Dir dann ? Die Frage, die hier behandelt wird ist doch genau Deine Thread-Überschrift: "Was ist ein UTF-8-Zeichen". Und ich kann Dir nicht übelnehmen, dass Du nicht Anhieb verstehst, was ein Unicode-Zeichen denn nun tatsächlich ist, wo doch die Stringverarbeitung im Unicode-Lazarus so aussieht, wie die im alten ANSI-Lazarus, aber nicht dasselbe tut.

-Michael

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

Re: Erkennen ob das Zeichen ein UTF8 Zeichen ist

Beitrag von theo »

mschnell hat geschrieben:
theo hat geschrieben:Die sind meistens viel weniger holzköpfig als bärtige Delphi Konvertiten. ;-)
Woher weißt Du, dass ich einen Bart habe ?
:lol: Der war gut!!

Antworten