Einzelnen Beitrag anzeigen

Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.053 Beiträge
 
Delphi 2009 Professional
 
#8

AW: Wahre Zeichenanzahl ermitteln

  Alt 13. Jul 2017, 22:27
UTF-8 setzt auf ASCII auf, nicht auf ANSI (Windows-1252/Latin-1). Unicode setzt auf Latin-1 auf.

UTF-16 ist aber auch ein Multi-Byte-Zeichensatz. Mal 2 und mal 4 Bytes.

Für Delphi könnte man das so machen:
Delphi-Quellcode:
function RealLength(s: string): Integer;
var
  c: Char;
begin
  Result := 0;
  for c in s do
  case Ord(c) of
    $D800..$DBFF: Continue; // High Surrogate, man könnte auch genau so gut Low Surrogate nehmen, Hauptsache man nimmt nur eins von beiden
    else inc(Result);
  end;
end;
Janni
2005 PE, 2009 PA, XE2 PA

Geändert von Redeemer (14. Jul 2017 um 09:04 Uhr)
  Mit Zitat antworten Zitat