AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Einlesen von KAPUTTER Unicode-Datei

Ein Thema von Codehunter · begonnen am 5. Feb 2019 · letzter Beitrag vom 6. Feb 2019
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Einlesen von KAPUTTER Unicode-Datei

  Alt 5. Feb 2019, 12:00
Hallo!

Bein Einlesen einer Datei erhalte ich die Exception "Keine Zuordnung für Unicodezeichen in der Multibyte-Zielcodeseite vorhanden". Beim Durchschauen habe ich festgestellt, es sind in der Datei tatsächlich ALLE Sonderzeichen geschrottet und durch die Zeichenfolge
Code:
�
(aus ANSI-Sichtweise, alle gleich, egal was es vorher mal war) ersetzt worden. Das ist serverseitig passiert und außerhalb meines Einflussbereiches. Das ist zwar doof, sollte aber nicht dazu führen dass mein Programm beim Einlesen aufgibt. Vielmehr hätte ich gerne, dass nicht dekodierbare Unicode-Zeichen als "?" ausgegeben werden. Kann man das mit wenig Aufwand hier ergänzen oder muss ich die gesamte Datei "zu Fuß" scannen?
Delphi-Quellcode:
  LReader := TStreamReader.Create(AStream, TEncoding.Unicode, True, 2048);
  try
    FZeileNr := 0;
    while LReader.Peek >= 0 do begin
      ZeileVerarbeiten(LReader.ReadLine);
      Inc(FZeileNr);
    end;
  finally
    FreeAndNil(LReader);
  end;
Das ist auch insofern sehr wichtig, damit nicht dekodierbare Zeichen nicht dazu führen, dass sich Multibyte-Zeichen zu mehreren Singlebyte-Zeichen "vermehren" weil das die Logik durcheinander bringt.
Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Redeemer

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

AW: Einlesen von KAPUTTER Unicode-Datei

  Alt 5. Feb 2019, 12:29
Du liest ja die Datei als UTF-16LE ein. � ist aber UTF-8. Ist das gewollt?
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Einlesen von KAPUTTER Unicode-Datei

  Alt 5. Feb 2019, 12:48
Wie gesagt, die Datei ist kaputt. Sie hat eine Unicode-Preamble, aber die Sonderzeichen sind vermurkst. Gut möglich, dass das ein Mischmasch aus Unicode und UTF8 ist. Mir geht es aber nur um eine Art Failsafe-Modus. So dass der Anwender 90% lesen kann. Immer noch besser als eine schnöde Fehlermeldung und Ende Gelände.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
freejay

Registriert seit: 26. Mai 2004
Ort: Nürnberg
272 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Einlesen von KAPUTTER Unicode-Datei

  Alt 5. Feb 2019, 13:44
Du könntest die Datei im Falle des Fehlers nochmals einlesen mit TEncoding.UTF8 als Vorgabe?

Nee, sorry, das war Quatsch, das geht bei einer ANSI-Datei, aber nicht bei fixer Mehr-Byte-Codierung (UNICODE)...
[Delphi 11.3.1 Enterprise; Win10/11; MySQL; VCL]

Geändert von freejay ( 5. Feb 2019 um 13:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#5

AW: Einlesen von KAPUTTER Unicode-Datei

  Alt 5. Feb 2019, 13:48
Du könntest die Datei im Falle des Fehlers nochmals einlesen mit TEncoding.UTF8 als Vorgabe?
Was überhaupt nichts bringt, wenn die Datei
Zitat:
ein Mischmasch aus Unicode und UTF-8 ist
.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
freejay

Registriert seit: 26. Mai 2004
Ort: Nürnberg
272 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Einlesen von KAPUTTER Unicode-Datei

  Alt 5. Feb 2019, 13:52
Ja, ist mir auch schon aufgefallen... (s.o.) *schäm*
[Delphi 11.3.1 Enterprise; Win10/11; MySQL; VCL]
  Mit Zitat antworten Zitat
freejay

Registriert seit: 26. Mai 2004
Ort: Nürnberg
272 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Einlesen von KAPUTTER Unicode-Datei

  Alt 5. Feb 2019, 13:53
Ich arbeite halt immer nur mit ANSI oder UTF8...
[Delphi 11.3.1 Enterprise; Win10/11; MySQL; VCL]
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Einlesen von KAPUTTER Unicode-Datei

  Alt 5. Feb 2019, 13:56
Jepp, so seh ich das auch. Wenn ich die Datei mit Notepad++ öffne, dann werden eben jene defekten Zeichen als ein Platzhalter-Rechteck angezeigt. Genau so würde ich das auch gern machen. Irgendein Platzhalter, der wenigstens die Zeichenlänge reserviert, sodass nachfolgende nicht nach rechts weiter gerückt werden.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
freejay

Registriert seit: 26. Mai 2004
Ort: Nürnberg
272 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Einlesen von KAPUTTER Unicode-Datei

  Alt 5. Feb 2019, 14:25
In meinem Umfeld und bei meinen Anwendungen kann ich mir nicht vorstellen, dass es Sinn macht, mit dieser kaputten Datei weiterzuarbeiten.

Wenn es sich hier also um einen Einzelfall handelt: Warum sollte das Programm dann nicht mit einem - sauber abgefangenen - Fehler aussteigen?

Wenn das öfter vorkommt, müsste man wahrscheinlich doch den langen Weg beschreiten und die Ursache des Fehlers angehen.
[Delphi 11.3.1 Enterprise; Win10/11; MySQL; VCL]
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Einlesen von KAPUTTER Unicode-Datei

  Alt 5. Feb 2019, 15:32
Hallo,
hm, so viele verschiedene (deutsche) Sonderzeichen gibt es doch eigentlich gar nicht.
Kannst du die kaputten Zeichen nicht einfach ersetzen?

StringList.LoadFromFile
StringReplace StringList.Text


Das macht natürlich nur Sinn, wenn die häufiger solche Dateien bekommst.
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 00:04 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