Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Codierung und Dekodierung von Umlauten (https://www.delphipraxis.net/176722-codierung-und-dekodierung-von-umlauten.html)

Gerd01 22. Sep 2013 16:00

Codierung und Dekodierung von Umlauten
 
Im Moment raucht mir der Kopf und ich weiss vor lauter Encoding und Decoding Funktionen nixht mehr weiter

Wie heisst die Codierungs-Funktion in Delphi in der ich von der Zeichenkette

Zurücksetzen

auf diese Zeichenkette

Zurücksetzen

komme?

hstreicher 22. Sep 2013 16:09

AW: Codierung und Dekodierung von Umlauten
 
da wir nicht wissen wie die Daten ursprünglich kodiert sind wissen wirs auch nicht sicher,

aber es sieht sehr nach einer UTF8Encode aus

Gerd01 22. Sep 2013 16:18

AW: Codierung und Dekodierung von Umlauten
 
Hier mein Beispiel:
Code:
Var
  Quelle : String;
  Ziel  : String;
begin
  Quelle := 'Zurücksetzen';
  Ziel  := UTF8Encode (Quelle);
end;

Ziel ist dabei als Ergebnis immer noch 'Zurücksetzen' und nicht 'Zurücksetzen'

samso 22. Sep 2013 19:17

AW: Codierung und Dekodierung von Umlauten
 
Ich würde raten, dass Du mit Delphi>=2009 arbeitest. Dann wird durch die Zuweisung Ziel := UTF8Encode(Quelle) der UTF8String intern sofort wieder in einen UTF16-String umgesetzt (Warnung des Compilers: "Implizite String-Umwandlung von 'RawByteString' zu 'string'"). Du könntest es so versuchen:

Delphi-Quellcode:
Var
   Quelle : String;
   Ziel : UTF8String;
 begin
   Quelle := 'Zurücksetzen';
   Ziel := UTF8Encode (Quelle);
 end;
Du wirst aber weiterhin nicht den String 'Zurücksetzen' sehen, denn der Debugger erkennt natürlich die Kodierung und zeigt dir korrekt die Umlaute an. Wenn Du das Ergebnis sehen willst, könntest du "Ziel" in eine Datei kopieren und diese dir dann mit einem Editor ansehen, der die Datei als Ansi-Datei (Codepage 1252) statt als UTF8-Datei anzeigt.

Gerd01 24. Sep 2013 07:32

AW: Codierung und Dekodierung von Umlauten
 
Ich werde es "von Hand" mit stringreplace durchführen. Muß ja nur ä,ö,ü,ß und Ä,Ö,Ü umsetzen.

Es geht darum GNU gettext für Übersetzungen zu verwenden. Mein Ausgangspassis sind Deutsche Strings, die UTF-8 kodiert sind.

Bernhard Geyer 24. Sep 2013 07:45

AW: Codierung und Dekodierung von Umlauten
 
Zitat:

Zitat von Gerd01 (Beitrag 1229676)
Ich werde es "von Hand" mit stringreplace durchführen. Muß ja nur ä,ö,ü,ß und Ä,Ö,Ü umsetzen.

Es geht darum GNU gettext für Übersetzungen zu verwenden. Mein Ausgangspassis sind Deutsche Strings, die UTF-8 kodiert sind.

Und wieso eine Krückenlösung nehmen wenn mit der Funktion UTF8Encode eine richtige Lösung existiert?

Gerd01 24. Sep 2013 16:53

AW: Codierung und Dekodierung von Umlauten
 
Ich habe eine neues Übersetzungstool gesucht und bin bei gnugettext für Delphi gelandet.

Da ich deutsche Strings in meinem Programm habe muss ich die Übersetzungsschablone mit der Option "Erlaube nicht ASC-Text" erstellen.

In der default.po steht es dann zum Beispiel für einen Resourcestring so:

#. Programmer's name for it: _RSInfoReset
msgid "Zurücksetzen"
msgstr "Reset"

Nur wenn ich an die Funktion gettext "Zur¼cksetzen" übergebe wir die korrekte Übersetzung "Reset" übergeben.
Also bastele ich aus Zurücksetzen die Übergabe: "Zur¼cksetzen".

Mit UTF8Endoce und UTF8String geht das leider eben nicht.

So ganz glücklich bin ich damit aber nicht.

rwalper 24. Sep 2013 17:39

AW: Codierung und Dekodierung von Umlauten
 
Hallo Gerd,

normalerweise brauchst Du nichts Encoden oder Decoden, wenn Du die aktuelle gnugettext.pas verwendest.

Diese findest Du im Unterverzeichnis "examples", wenn DU Dir folgendes SVN-Archiv holst:
https://svn.code.sf.net/p/dxgettext/code/trunk

Außerdem musste ich das Projekt "dxgettext" neu übersetzen und diese exe verwenden, damit auch UTF8-kodierte pas-Dateien vernünftig gescannt werden konnten. (Ich verwende gerade XE3)

Vielleicht habe ich mich auch nur dämlich angestellt, denn ich habe nur die "alte" dxgettext-1.2.2.exe gefunden und installiert. Vielleicht gibt es ja irgendwo noch ein aktuelles Binärpaket zum Download.

Jedenfalls funktioniert es so bei mir.

Gerd01 29. Sep 2013 07:47

AW: Codierung und Dekodierung von Umlauten
 
Zitat:

Zitat von rwalper (Beitrag 1229785)
Hallo Gerd,


Außerdem musste ich das Projekt "dxgettext" neu übersetzen und diese exe verwenden, damit auch UTF8-kodierte pas-Dateien vernünftig gescannt werden konnten. (Ich verwende gerade XE3)

Dein Tipp war gooldrichtig. Die UTF-8 Kodierung stimmt jetzt.
Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz