AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kodierung in UCS-2 Little Endian

Ein Thema von Dragon27 · begonnen am 22. Jan 2015 · letzter Beitrag vom 10. Okt 2019
Antwort Antwort
Seite 3 von 3     123   
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#21

AW: Kodierung in UCS-2 Little Endian

  Alt 9. Okt 2019, 09:55
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;
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
704 Beiträge
 
Delphi 12 Athens
 
#22

AW: Kodierung in UCS-2 Little Endian

  Alt 10. Okt 2019, 11:36
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:

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?
Peter Below
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#23

AW: Kodierung in UCS-2 Little Endian

  Alt 10. Okt 2019, 12:23
Erstellungsdatum des Threads? Anyone?
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#24

AW: Kodierung in UCS-2 Little Endian

  Alt 10. Okt 2019, 13:52
Es ist nie zu spät gegen vergangene Verbrechen vorzugehen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:23 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