Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Unsichtbare UTF16 Zeichen (https://www.delphipraxis.net/213181-unsichtbare-utf16-zeichen.html)

geldis 11. Jun 2023 09:29

Unsichtbare UTF16 Zeichen
 
Hallo!

Ich muss aus UTF8-Strings, in dem sich ein oder mehrere 'unsichtbare' UTF16 Zeichen befinden, ebendiese entfernen. Der Utf8 String soll auch ein solcher bleiben.

Der UTF8 String:
Code:
  Kastagnette CM-9
Konvertiert zu ANSI
Code:
  Kastagnette CM-?9
Man beachte das Fragezeichen. Die Konvertierungsroutinen habe ich natürlich gefunden - aber welche nehme ich da und auch wie?

geldis

peterbelow 11. Jun 2023 10:54

AW: Unsichtbare UTF16 Zeichen
 
konvertriere den UTF-8 Text nach UTF-16, wirf dort die unerwünschten Zeichen raus und konvertiere das Resultat zurück nach UTF-8.

Wie im Detail hängt von der verwendeten Delphi-Version ab und in welchem Datentyp der UTF-8-String gespeichert ist. Neuere Delphiversionen haben z. B. einen Utf8String Typ. Durch simple Zuweisung an eine Variable vom Typ String erfolgt die Konvertierung in UTF-16 und der umgekehrte Weg funktioniert genauso.
Die Unit System.Character enthält eine Menge Funktionen zur Klassifizierung von UTF-16 Zeichen, z. B. IsWhitespace; damit kann man die unerwünschten Zeichen identifizieren. Die meisten dieser Funktionen sind auch über TCharHelper verfügbar, man also direkt sowas wie aString[i].IsWhitespace verwenden.

geldis 11. Jun 2023 14:18

AW: Unsichtbare UTF16 Zeichen
 
Prima, besten Dank, damit komme ich dahin wo ich hin will.

geldis


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