Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Zeichencodierung Mac vs Windows (https://www.delphipraxis.net/194621-zeichencodierung-mac-vs-windows.html)

Redeemer 14. Dez 2017 21:25

AW: Zeichencodierung Mac vs Windows
 
Das ist nicht so schwer:
Code:
StringList.Text := UTF8Encode(StringList.Text);
StringList.SaveToFile('bla.txt');

Delphi.Narium 14. Dez 2017 21:33

AW: Zeichencodierung Mac vs Windows
 
Wenn ich das recht verstanden habe, wird im Zielsystem ein Zeichensatz für den MAC erwartet und kein UFT8.

Wenn man also aus 'ner Delphi-2006-Zeichenfolge UTF8 macht, braucht man immernoch eine Umwandlung von UFT8 auf den MAC-Zeichensatz. Müsste in die "Konvertierkette" also noch 'nen MAC einbauen, bzw. die gelieferten Dateien auf dem MAC erst noch konvertieren.

Bin als Kunde jetzt aber mal dreist: Ich erwarte vom Lieferanten den von mir gewünschten Zeichensatz. Der Zweizeiler wäre hier daher (vermutlich) nur die halbe Miete. Oder hab' ich die Aufgabenstellung nicht verstanden?

himitsu 14. Dez 2017 21:48

AW: Zeichencodierung Mac vs Windows
 
UTF-8 war unter der Annahme, dass das ZielSystem damit auch umgehen kann.


MSDN-Library durchsuchenMultiByteToWideChar
MSDN-Library durchsuchenWideCharToMultiByte

Erstmal deinen Text nach Unicode (WideString vor Delphi 2009) und dann in die gewünschte CodePage.
ANSI mit Codepage X > Unicode (WideChar) > ANSI mit Codepage Y
Ab Delphi 2009 hast du bereits standardmäßig Unicode und der erste Schritt kann entfallen, außer man hat explizit AnsiString gearbeitet, dann ändert sich nichts.


Zitat:

StringList.Text := UTF8Encode(StringList.Text);
Und ab Delphi 2009 raucht dieser Code dann grandios ab.

p80286 14. Dez 2017 22:56

AW: Zeichencodierung Mac vs Windows
 
Habe ich da was falsch verstanden? Es geht darum einen 8Bit Zeichensatz in einen anderen zu überführen.
Wie wäre es dann mit
Delphi-Quellcode:
case byte(inchar) of
  259 : outchar:=159;
  etc.
end;
oder gleich eine Übersetzungstabelle:
Delphi-Quellcode:
var
  ubersetzungstabelle = Array [0..255] of Byte;

ubersetzungstabelle[259]:=159;
...
macstring:=winstring;
for i:=1 to length(macstring) do
  Byte(macstring[i]):=ubersetzungstabelle[byte(macstring[i]);
Solange eine 1:1 Umsetzung möglich ist, sollte das funktionieren.

Gruß
K-H

TigerLilly 15. Dez 2017 07:21

AW: Zeichencodierung Mac vs Windows
 
Ja, die Übersetzungstabelle ist das Gespenst, vor dem ich davonlaufen wollte. :-)

Höchste Zeit D2006 loszuwerden.

Danke für die Tipps!


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:35 Uhr.
Seite 2 von 2     12   

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