Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Ansi Datei in Widestring konvertieren (https://www.delphipraxis.net/131559-ansi-datei-widestring-konvertieren.html)

backdraft 26. Mär 2009 15:37


Ansi Datei in Widestring konvertieren
 
Hallo ich hab eine Frage, ob es sowas schon in Delphi gibt, oder ob ich es selbst programmieren muss.

Ich hab eine Datei im Ansi-Format. Die Datei enthält kyrillische Zeichen im ISO8859-5 Format.

Die Konvertierung habe ich mir besorgt und müsste ja jetzt jedes Zeichen in WideChar konvertieren

Beispiel:
0xA1 0x0401 # CYRILLIC CAPITAL LETTER IO
0xA2 0x0402 # CYRILLIC CAPITAL LETTER DJE
0xA3 0x0403 # CYRILLIC CAPITAL LETTER GJE

Da die ISO Tabellen ja feststehen, frag ich mich, ob es nicht in Delphi integriert ist, ein Ansi Zeichen nach Widestring zu konvertieren.
Ich hab nur AnsiToUTF8 gefunden, aber der weiss ja nicht, welchen ISO Code mein Ansi Zeichensatz verwendet.

Vielen Dank für eure Hilfe
Oliver

himitsu 26. Mär 2009 15:47

Re: Ansi Datei in Widestring konvertieren
 
ISO-8859-5 ist kein ANSI :warn:

Umwandlung:
Delphi-Quellcode:
Var S: AnsiString;
  S2: WideString;

S := 'Dateiinhalt';

i := MultiByteToWideChar(ISO_8859_5, 8{MB_ERR_INVALID_CHARS},
  PAnsiChar(S), Length(S), nil, 0);
SetLength(S2, i);
MultiByteToWideChar(ISO_8859_5, 8{MB_ERR_INVALID_CHARS},
  PAnsiChar(S), Length(S), PWideChar(S2), i);

// S2 = Dateiinhalt in Unicode

// Codepage (falls Konstante unbekannt): ISO_8859_5 = 28595
Dateiinhalt in einen AnsiString laden, umwandeln und dann als WideString zurück in die Datei

backdraft 26. Mär 2009 19:49

Re: Ansi Datei in Widestring konvertieren
 
Perfekt, klappt super,
vielen Dank :-)

Nur die Konstante ISO_8859_5 find ich nicht. Laut Hilfe ist das 28595.

himitsu 26. Mär 2009 20:07

Re: Ansi Datei in Widestring konvertieren
 
Zitat:

Zitat von backdraft
Perfekt, klappt super, vielen Dank :-)

bitte bitte :-D

Zitat:

Zitat von backdraft
Nur die Konstante ISO_8859_5 find ich nicht. Laut Hilfe ist das 28595.

OK, hab grad suchen lassen und ist wirklich nicht in Delphi drin ...
war nur vorhin irgendwie der Meinnung diese mal irgendwo in den Indys oder im XDOM gesehn zu haben ...
nja, hatte ihren Wert aber Sicherheitshalber doch noch mitgeliefert (ganz unten gut versteckt) :mrgreen:

DP-Maintenance 27. Mär 2009 08:23

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage

himitsu 28. Mär 2009 09:19

Re: Ansi Datei in Widestring konvertieren
 
hier noch einige andere Codepages :angel:
und für Weiteres/Genaueres siehe MSDN-Library durchsuchenMultiByteToWideChar bzw. MSDN-Library durchsuchenWideCharToMultiByte

Delphi-Quellcode:
Encoding       CodePage

UTF-7              65000
UTF-8              65001
ISO-10646-UCS-2     1200 (PseudoCodepage für Unicode zu Unicode)
ISO-8859-1         28591
ISO-8859-2         28592
ISO-8859-3         28593
ISO-8859-4         28594
ISO-8859-5         28595
ISO-8859-6         28596
ISO-8859-7         28597
ISO-8859-8         28598
ISO-8859-9         28599
ISO-2022-JP       50220
EUC-JP            51932
SHIFT-JIS           932
WINDOWS-1250        1250
WINDOWS-1251        1251
WINDOWS-1252        1252
WINDOWS-1253        1253
WINDOWS-1254        1254
WINDOWS-1255        1255
WINDOWS-1256        1256
WINDOWS-1257        1257
WINDOWS-1258        1258


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:38 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