AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi UTF8 in Stringlist -> Suchen und ersetzen -> UTF8 speichern
Thema durchsuchen
Ansicht
Themen-Optionen

UTF8 in Stringlist -> Suchen und ersetzen -> UTF8 speichern

Ein Thema von Grolle · begonnen am 8. Mai 2009 · letzter Beitrag vom 8. Mai 2009
Antwort Antwort
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#1

UTF8 in Stringlist -> Suchen und ersetzen -> UTF8 spei

  Alt 8. Mai 2009, 16:22
Hallo,

zur Verfügung stehen mir Delphi 2007 und die TNTUnicode Controls. Wie gehe ich da am Besten vor?

Viele Grüße ...

  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: UTF8 in Stringlist -> Suchen und ersetzen -> UTF8

  Alt 8. Mai 2009, 16:33
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ß
$2B or not $2B
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#3

Re: UTF8 in Stringlist -> Suchen und ersetzen -> UTF8

  Alt 8. Mai 2009, 16:53
Zitat von himitsu:
besitzt die TTNTStringList (oder wie die da heißen mag) keine Property für die Kodierung?
habe ich bis jetzt noch nicht gefunden

  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: UTF8 in Stringlist -> Suchen und ersetzen -> UTF8

  Alt 8. Mai 2009, 17:02
eigentlich dachte ich die hätten da etwas drin


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);
$2B or not $2B
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#5

Re: UTF8 in Stringlist -> Suchen und ersetzen -> UTF8

  Alt 8. Mai 2009, 17:51
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 ...

  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

Re: UTF8 in Stringlist -> Suchen und ersetzen -> UTF8

  Alt 8. Mai 2009, 18:03
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#7

Re: UTF8 in Stringlist -> Suchen und ersetzen -> UTF8

  Alt 8. Mai 2009, 18:15
Hi,
Zitat von himitsu:
... allerdings wäre da oftmals am Anfang das BOM, ...

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 ...

  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

Re: UTF8 in Stringlist -> Suchen und ersetzen -> UTF8

  Alt 8. Mai 2009, 18:26
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:
SL.LoadFormFile(...);
SL.Text := UTF8Decode(SL.Text);
...
SL.Text := UTF8Encode(SL.Text);
SL.SaveToFile(...);
[info]
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!
$2B or not $2B
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#9

Re: UTF8 in Stringlist -> Suchen und ersetzen -> UTF8

  Alt 8. Mai 2009, 18:45
Hi,

Zitat von himitsu:
... falls du praktisch nach einem UTF8Decode ein zusätzliches "komisches" Zeichen am Anfang ...
Scheint nicht der Fall zu sein. Danke für deine Hilfe!

  Mit Zitat antworten Zitat
Antwort Antwort


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 14:03 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