Danke im Voraus! Gruß Bernd
#228 ---> 'ä'
#228 ---> 'ä'
Wie kann ich aus ANSI #228 bzw. aus Char(228) einen String mit einem 'ä' drin machen
Ich habe schon verstanden, dass ein AnsiString das 'ä' in zwei Zeichen speichert
Arbeitet Freepascal eigentlich mit UTF-8 oder Unicode oder mit was? Ich habe schon herum gesucht, aber nichts richtig gefunden. Bei "AnsiString" steht leider nix - der AnsiString ist aber auch kein Ansicode-String mehr
Danke im Voraus! Gruß Bernd
Danke im Voraus! Gruß Bernd
Re: #228 ---> 'ä'
Lazarus arbeitet mit UTF-8 also Unicode.
Erkläre doch bitte in einem erweiterten Zusammenhang, was du erreichen möchtest.
Bei Unicode muss man manchmal gewohnte Vorgehensweisen überdenken.
Erkläre doch bitte in einem erweiterten Zusammenhang, was du erreichen möchtest.
Bei Unicode muss man manchmal gewohnte Vorgehensweisen überdenken.
Re: #228 ---> 'ä'
Ich möchte gerne aus einer Zahl, die einem Ansi-Zeichen entspricht (z.B. #228) einen String machen, der das entsprechende UTF-8 Zeichen enthält (z.B. ä):
Gibt es eine Funktion xyz, die aus einer Ansi-Zahl einen (UTF-8-) String mit dem entsprechenden Zeichen macht?
Code: Alles auswählen
VAR i:Byte;
s:String;
BEGIN
i:=228;
s:=xyz(i);
IF s='ä' THEN ...super...
END;-
Mathias
- Beiträge: 7135
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: #228 ---> 'ä'
Code: Alles auswählen
var
i: Byte;
s: string;
begin
i := 228;
s := AnsiToUtf8(char(i));
if s = 'ä' then begin
Caption := s;
end;
end; Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: #228 ---> 'ä'
Der Code von Mathias funktioniert unter Liniux nicht.
Und dich Bernd82 habe ich nach dem erweiterten Zusammenhang gefragt.
Das was du wiederholst, hatte ich schon verstanden, aber nicht, was du in einem Unicode System damit erreichen willst, bzw. was du mit "ANSI" willst.
Und dich Bernd82 habe ich nach dem erweiterten Zusammenhang gefragt.
Das was du wiederholst, hatte ich schon verstanden, aber nicht, was du in einem Unicode System damit erreichen willst, bzw. was du mit "ANSI" willst.
Re: #228 ---> 'ä'
Danke Mathias. Das funktioniert und ist genau was ich brauche!
Hallo theo, ich habe Strings und Chars im Format ANSI und muss sie mit Lazarus z.B. in einem TMemo anzeigen. Warum funktioniert es unter Linux nicht und was müsste ich dort anders machen?
Danke und Gruß Bernd
Hallo theo, ich habe Strings und Chars im Format ANSI und muss sie mit Lazarus z.B. in einem TMemo anzeigen. Warum funktioniert es unter Linux nicht und was müsste ich dort anders machen?
Danke und Gruß Bernd
Re: #228 ---> 'ä'
Woher hast du die? Aus einer Datei?Bernd82 hat geschrieben: Hallo theo, ich habe Strings und Chars
Oben hast du aber eine Zahl (Byte) welche auf einer bestimmten ANSi Codepage einem Buchstaben 'ä' entspricht.
Lass dir doch nicht alles aus der Nase ziehen. Für eine vernünftige Antwort muss man mehr wissen.
-
Socke
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: #228 ---> 'ä'
@theo: Rekursive Grüße an dich
Bernd82 hat geschrieben:Warum funktioniert es unter Linux nicht und was müsste ich dort anders machen?
theo hat geschrieben:Lass dir doch nicht alles aus der Nase ziehen. Für eine vernünftige Antwort muss man mehr wissen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: #228 ---> 'ä'
Warum? Ich möchte einfach zuerst wissen worum es geht. Dann kann ich eine passende Antwort geben.Socke hat geschrieben:@theo: Rekursive Grüße an dich![]()
Ist das zuviel verlangt?
Wenn jemand mit 1-Byte ANSI arbeitet, gibt es ja möglicherweise andere Optimierungsmöglichkeiten.
-
Socke
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: #228 ---> 'ä'
Für den Fall, das AnsiToUTF8 unter Linux nicht funktioniert, könnte dies ein nicht beabsichtigter Fehler sein, der in einen Bug-Report dokumentiert gehört.
Oder fehlt bei dir der C-WideString-Manager?
Oder fehlt bei dir der C-WideString-Manager?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: #228 ---> 'ä'
Offenbar geht es hier weiter:
http://forum.lazarus.freepascal.org/ind ... cseen.html
Ich bin dann mal raus.
http://forum.lazarus.freepascal.org/ind ... cseen.html
Ich bin dann mal raus.
Re: #228 ---> 'ä'
Unter Linux kann ich wahrscheinlich die Unit LConvEncoding verwenden. Die Funktionenscheinen jeweils ein 'ä' zu erzeugen bzw. einen alten Ansi-String korrekt in einen Lazarus-String umzusetzen. Danke den Postern, die mir hier geholfen haben! Danke an wp, der mir hier geholfen hat.
Gruß Bernd
Code: Alles auswählen
CP1252ToUTF8(#228);
ISO_8859_1ToUTF8(#228);Gruß Bernd
Re: #228 ---> 'ä'
Das hätte ich dir auch sagen können. Sieht aber nicht unbedingt nach einer guten Idee aus.
Na egal.
Na egal.
Re: #228 ---> 'ä'
Hallo theo,
was hältst Du für kritisch? Würdest Du es anders machen? Ich habe Strings aus Dateien, die ANSI-codiert sind. Die muss ich in Lazarus verwenden, verarbeiten und ggf. anzeigen. Nachher muss ich sie wahrscheinlich wieder ANSI-codiert in Dateien zurück schreiben (Dateiformat-Kompatibilität).
Gruß Bernd
was hältst Du für kritisch? Würdest Du es anders machen? Ich habe Strings aus Dateien, die ANSI-codiert sind. Die muss ich in Lazarus verwenden, verarbeiten und ggf. anzeigen. Nachher muss ich sie wahrscheinlich wieder ANSI-codiert in Dateien zurück schreiben (Dateiformat-Kompatibilität).
Gruß Bernd
Re: #228 ---> 'ä'
Ich habe mir unter Windows mal alle konvertierten Buchstaben angesehen und bin der Meinung dass
CP1252ToUTF8( )
die bessere Alternative zu sein scheint.
ISO_8859_1ToUTF8( )
hingegen hat eine undefinierte Lücke von Character #128 bis #159. Z.B. das €-Zeichen würde dann fehlen...
Bernd
CP1252ToUTF8( )
die bessere Alternative zu sein scheint.
ISO_8859_1ToUTF8( )
hingegen hat eine undefinierte Lücke von Character #128 bis #159. Z.B. das €-Zeichen würde dann fehlen...
Bernd