Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   XML mit UTF-8 encoded in nem Editor darstellen (https://www.delphipraxis.net/169925-xml-mit-utf-8-encoded-nem-editor-darstellen.html)

Iwo Asnet 21. Aug 2012 15:05

XML mit UTF-8 encoded in nem Editor darstellen
 
Hi,

Ich habe folgende XML-Datei
Code:
<?xml version="1.0" encoding="UTF-8"?>
<Sample>Rückwärts</Sample>
Alles klar: UTF-8 kodierte ASCII-Datei. Wenn ich die mit dem IE/FF, Notepad++ oder sonstwem öffne, sehe ich genau das oben angezeigte, also eben die UTF-8 kodierten Zeichen. Is ja klar, die XML-Datei enthält ja keinen BOM.

Mit welchem Tool schaffe ich es, das die XML-Datei gelesen und das "encoding" Attribut korrekt angewendet wird? Ziel: Ich möchte ohne BOM folgendes sehen:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<Sample>Rückwärts</Sample>

mjustin 21. Aug 2012 15:40

AW: XML mit UTF-8 encoded in nem Editor darstellen
 
Zitat:

Zitat von Iwo Asnet (Beitrag 1179061)
Is ja klar, die XML-Datei enthält ja keinen BOM.

UTF-8 kodierte Dateien brauchen kein BOM (es wird sogar davon abgeraten, es zu verwenden).

Notepad ++ zeigt bei mir auch korrekt "UTF-8 ohne BOM" an, wenn ich das Dokument

<?xml version="1.0" encoding="UTF-8"?>
<Sample>Rückwärts</Sample>

öffne, und es steht lesbar der Text "Rückwärts" im Editor.

Nachtrag:

Auch mit ShowMessage(UTF8Decode('Rückwärts')); kann man es leicht testen es ist eine korrekte UTF-8 Codierung.

Iwo Asnet 21. Aug 2012 15:41

AW: XML mit UTF-8 encoded in nem Editor darstellen
 
Wenn man hier etwas postet, kommt man selbst drauf.

Der XML-String wird UTF-8 kodiert und dann nochmals UTF-8 kodiert gespeichert, nur wo-frag ich mich gerade (C# code)

edit... thema erledigt.... C# speichert von sich aus als UTF-8 und kodiert also nochmals... Na ja..

Wo sitzt das größte Problem?.. :mrgreen:

himitsu 21. Aug 2012 15:50

AW: XML mit UTF-8 encoded in nem Editor darstellen
 
Zitat:

Zitat von mjustin (Beitrag 1179079)
UTF-8 kodierte Dateien brauchen kein BOM (es wird sogar davon abgeraten, es zu verwenden).

Falsch.

"Text"-Dateien ohne BOM sind standardmäßig ANSI und werden in der Standard-CodePage des Systems ausgewertet.

"XML"-Dateien sollten sowieso keine BOMs enthalten und wenn weder BOM, noch ein Encoding-Attribut (in der Processing-Instruction) angegeben ist, dann wird sie standardmäßig als UTF-8 interpretiert.

Wenn man die eine XML-Datei aber mit einem "Text"-Editor öffnet, welcher nicht das enthaltene Encoding-Attribut beachtet, dann soll man sich auch nicht wundern, wenn die Datei als ANSI interpretiert wird.



Es gibt einige "höherentwickelte" Text-Editoren, welche XML-Prozessoranweisungen interpretieren, sowie sich den Text ansehn, ob sie z.B. für UTF-8 typische Zeichen-/Bytekombinationen entdecken und dann dementsprechend die (vermutlich) richtige Codierung verwenden.

mjustin 21. Aug 2012 15:53

AW: XML mit UTF-8 encoded in nem Editor darstellen
 
Zitat:

Zitat von himitsu (Beitrag 1179086)
Zitat:

Zitat von mjustin (Beitrag 1179079)
UTF-8 kodierte Dateien brauchen kein BOM (es wird sogar davon abgeraten, es zu verwenden).

Falsch.

"Text"-Dateien ohne BOM sind standardmäßig ANSI und werden in der Standard-CodePage des Systems ausgewertet.

Wo, unter Windows?

Aus Wikipedia:

Zitat:

The Unicode Standard neither requires nor recommends the use of the BOM for UTF-8. The presence of the UTF-8 BOM may cause interoperability problems with existing software that could otherwise handle UTF-8
Weder erfordert noch empfiehlt der Unicode Standard die Verwendung des BOM für UTF-8. Die Anwesenheit des UTF-8 BOM kann Interoperabilitätsprobleme mit bestehender Software bewirken, die andernfalls UTF-8 verarbeiten könnten.

himitsu 21. Aug 2012 15:58

AW: XML mit UTF-8 encoded in nem Editor darstellen
 
Da Delphi noch nicht für Linux kompiliert ... ja. :stupid:

mjustin 21. Aug 2012 16:03

AW: XML mit UTF-8 encoded in nem Editor darstellen
 
Zitat:

Zitat von himitsu (Beitrag 1179091)
Da Delphi noch nicht für Linux kompiliert ... ja. :stupid:

Das spielt eigentlich im Zeitalter der Dateiübertragung zwischen verschiedenen Computersystemen und Plattformen keine große Rolle mehr.

Es kommt weniger darauf an, von welcher Programmiersprache aus die UTF-8 Datei erzeugt wird als dass man sich darauf einigen muss, welches Encoding verwendet wird.
Wenn UTF-8 mit BOM Probleme mit anderen Anwendungen bereiten kann, die die UTF-8 Dateien ohne BOM problemlos verarbeiten könnten, würde ich eher der Empfehlung des Unicode Standards folgen und kein BOM verwenden (siehe mein Nachtrag).

mjustin 21. Aug 2012 16:22

AW: XML mit UTF-8 encoded in nem Editor darstellen
 
Zitat:

Zitat von himitsu (Beitrag 1179086)
Es gibt einige "höherentwickelte" Text-Editoren, welche XML-Prozessoranweisungen interpretieren, sowie sich den Text ansehn, ob sie z.B. für UTF-8 typische Zeichen-/Bytekombinationen entdecken und dann dementsprechend die (vermutlich) richtige Codierung verwenden.

Das ehrt das simple "notepad.exe":

es stellt den Dateiinhalt

Rückwärts

als "Rückwärts" dar.

Damit zählt notepad.exe jetzt zu den höherentwickelten Editoren. Es interpretiert den Dateiinhalt nicht als ANSI, trotz fehlendem BOM...

Aber ansonsten gehe ich natürlich auch davon aus, dass Windows Anwendungen bei fehlendem BOM von der aktuellen Systemeinstellung (ANSI) ausgehen - irgendein Default muss man ja haben.

blackfin 21. Aug 2012 21:02

AW: XML mit UTF-8 encoded in nem Editor darstellen
 
Zitat:

Mit welchem Tool schaffe ich es, das die XML-Datei gelesen und das "encoding" Attribut korrekt angewendet wird? Ziel: Ich möchte ohne BOM folgendes sehen
"Tool" im Sinne von Text-Editor? Als kostenlose Alternative zum doch etwas primitiven Notepad gibts ja auch noch Notepad++, das sollte für (fast) alle Anforderungen genügen.
Wenns noch etwas komfortabler seins soll, den guten, alten, zwar nicht kostenlosen, aber dennoch lohnenswerten UltraEdit.
Oder, wenn du den Speicherplatz einer kompletten IDE nicht scheust, das kostenlose Netbeans, das kann mit XMLs richtig gut umgehen
(und ist auch sonst ein unglaublich praktisches Tool für alle möglichen Sachen, nicht nur fürs reine Programmieren, ich wünschte, die Delphi-IDE wäre so *g*)


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