![]() |
UTF8 in Stringlist -> Suchen und ersetzen -> UTF8 spei
Hallo,
zur Verfügung stehen mir Delphi 2007 und die TNTUnicode Controls. Wie gehe ich da am Besten vor? Viele Grüße ... |
Re: UTF8 in Stringlist -> Suchen und ersetzen -> UTF8
besitzt die TTNTStringList (oder wie die da heißen mag) keine Property für die Kodierung?
OK, bei 'ner "normalen" StringList (vor D2009) hätt ich einfach mal den 1. String um das BOM erweitert und ansonsten einfach alles UTF-8-kodiert in die Stringliste geladen ... wenn es unbedingt eine StringListe sein muß :nerd: |
Re: UTF8 in Stringlist -> Suchen und ersetzen -> UTF8
Zitat:
|
Re: UTF8 in Stringlist -> Suchen und ersetzen -> UTF8
eigentlich dachte ich die hätten da etwas drin :gruebel:
Quick&Dirty:
Delphi-Quellcode:
var x: File;
AssignFile(x, FileName); Reset(x); SetLength(S, FileSize(x)); BlockRead(x, S[1], FileSize(x)); CloseFile(x); Delete(S, 1, 3); TNTStringList.Text := UTF8Decode(S); ... AssignFile(x, 'FileName'); Rewrite(x); Write(x, #$EF#$BB#$BF); Write(x, UTF8Encode(TNTStringList.Text)); CloseFile(x); |
Re: UTF8 in Stringlist -> Suchen und ersetzen -> UTF8
Hi,
danke für dein Beispiel! Muss ich da überhaupt noch ne TNTStringList nutzen? (habe gerade mal alles einfach in eine normale Stringliste geladen - klappt auch (ohne jegliche dekodierung)). Es geht übrigens um WordXml-Dateien. Viele Grüße ... |
Re: UTF8 in Stringlist -> Suchen und ersetzen -> UTF8
Klar kannst'e UTF-8 auch direkt in 'ne normale StringList laden.
allerdings wäre da oftmals am Anfang das BOM, wobei dieses bei XML nichtmal nötig wäre und oftmals auch nicht vorhanden ist, da dort die Kodierung ja anders angegeben wird. Ansonsten sind bei UTF-8 alle Zeichen innerhalb des Ansi-Zeichensatzes, weßhalb die "normale" StringList erstmal keine Probleme hat. (nur Zeichen außerhalb des ASCII-Zeichensatzes werden ja UTF8-kodiert) Die TNTStringList ist nur nötig wenn du es zum Bearbeiten dekodierst und auch noch kodierte Unicodezeichen enthalten sind. |
Re: UTF8 in Stringlist -> Suchen und ersetzen -> UTF8
Hi,
Zitat:
Wie bekomme ich denn raus, ob es da ist und was kann ich dann mit der Information anfangen? Ich denke mein Weg geht erstmal über eine normal Stringlist, da vorerst nur Zeichen aus dem ASCII Zeichensatz vorkommen! Viele Grüße ... |
Re: UTF8 in Stringlist -> Suchen und ersetzen -> UTF8
BOM = Byte Order Mark
ist eine Identifikationseichenfolge am Anfang einer Textdatei und ich weiß jetzt nicht, ob M$ dieses in die XML reinbaut, da bei XML UTF-8 die Standardkodierung ist und es nicht angegeben werden muß für UTF-8 ist das BOM #$EF#$BB#$BF bzw. #239#187#191 für die ersten 3 Zeichen/Byte der Textdatei und nach der UFT-8 Dekodierung wäre somit das 1. Zeichen im Unicode ein #$FEFF falls du praktisch nach einem UTF8Decode ein zusätzliches "komisches" Zeichen am Anfang (vorm ersten < ) stehen hast, dann war ein BOM enthalten. (vorm Decodieren also 3 "komische" Zeichen)
Delphi-Quellcode:
[info]
SL.LoadFormFile(...);
SL.Text := UTF8Decode(SL.Text); ... SL.Text := UTF8Encode(SL.Text); SL.SaveToFile(...); Achtung: ab D2009 geht sowas hier nicht mehr, da dort das Unicode der Strings und Komponenten in die Quere kommt und die UTF8-Kodierung schrotten täte, wenn es über einen UnicodeString umgeleitet würde! |
Re: UTF8 in Stringlist -> Suchen und ersetzen -> UTF8
Hi,
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz