Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Kodierung in UCS-2 Little Endian (https://www.delphipraxis.net/183607-kodierung-ucs-2-little-endian.html)

Der schöne Günther 9. Okt 2019 08:55

AW: Kodierung in UCS-2 Little Endian
 
Sehe ich das richtig dass dem armen Mann im Endeffekt empfohlen wurde "Wird schon nichts außerhalb von UCS-2 vorkommen"?

Wenn es für mich noch nicht zu früh am Morgen ist dann entfernt man aus einem String doch einfach nur die Surrogates und hat einen String wo jedes Zeichen in die Basic Multilingual Plane, also 16 Bit, passt:

Delphi-Quellcode:
uses
   System.SysUtils,
   System.Character;

procedure RemoveNonUCS2(var str: String; const replacement: String = '');
var
   index: Integer;
   stringBuilder: TStringBuilder;
begin
   stringBuilder := TStringBuilder.Create(str.Length);
   try
      index := 0;
      repeat
         if Char.IsSurrogatePair(str, index) then
            begin
               Inc(index);
               if (not replacement.IsEmpty()) then
                  stringBuilder.Append(replacement);
            end
         else
            stringBuilder.Append(str.Chars[index]);
         Inc(index);
      until (index >= str.Length);

      str := stringBuilder.ToString();
   finally
      stringBuilder.Destroy();
   end;
end;

peterbelow 10. Okt 2019 10:36

AW: Kodierung in UCS-2 Little Endian
 
Zitat:

Zitat von Dragon27 (Beitrag 1287443)
Hallo zusammen,

wie die Überschrift sagt, habe ich Probleme mit dem kodieren einer Nachricht in "UCS-2 Little Endian".
Leider kann die lesende Lasermaschine nur dieses Encoding einwandfrei verarbeiten.
Wie kann ich Delphi am Besten dazu bringen, die Datei richtig zu kodieren?

Folgenden Code habe ich geschrieben, aber er funktioniert leider bei einigen Zeichen nicht:

Delphi-Quellcode:
strStream := TStringStream.Create('', TEncoding.Unicode);
Am Anfang der XML Datei steht übrigends folgendes Encoding:
Code:
<?xml version="1.0" encoding="utf-16"?>
Danke für eure Hilfe!

Hat die XML-Datei eine BOM am Anfang, wenn ja, welche?

TiGü 10. Okt 2019 11:23

AW: Kodierung in UCS-2 Little Endian
 
Erstellungsdatum des Threads? Anyone? :roll:

Der schöne Günther 10. Okt 2019 12:52

AW: Kodierung in UCS-2 Little Endian
 
Es ist nie zu spät gegen vergangene Verbrechen vorzugehen :warn:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 Uhr.
Seite 3 von 3     123   

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