Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   UTF8 in TMEMO laden (https://www.delphipraxis.net/188428-utf8-tmemo-laden.html)

wschrabi 3. Mär 2016 08:04

Datenbank: MySql • Version: 5 • Zugriff über: MyDAC

UTF8 in TMEMO laden
 
Hallo
ich habe eine UTF8 Text Datei die ich gern in ein Memo laden will mit:
Delphi-Quellcode:
   MemoRis.Lines.LoadFromFile(MyRISAll,Tencoding.UTF8);
doch bekomme ich den Error:

EEncodingError: "Keine Zuordnung für Unicode-Zeichen in der Multibyte-Zielcodeseite vorhanden"

Doch in einen UTF8 komp. Editor (SLickEdit) kann ich es ohne Probleme laden.
ALs FOnt des TMemos habe ich Arial Unicode MS und als Charset DEFAULT_CHARSET definiert.
Wer weiß Rat?

PS: Habe das hier gefunden: http://www.delphipraxis.net/1259015-post22.html doch kommt der Err auch ohne IDE.
Habe Delphi XE6

DANKE
Walter

Bernhard Geyer 3. Mär 2016 08:25

AW: UTF8 in TMEMO laden
 
Ich tippe darauf das die Datei nicht fehlerfrei Codiert ist oder Probleme mit dem BOM der Datei gibt.
Das es ein anderer (der Codierungsfehler überliest) lesen kann sagt nicht aus das die Datei OK ist.

wschrabi 3. Mär 2016 08:54

AW: UTF8 in TMEMO laden
 
in SlickEdit kann ist die Datei ok. Ich habe sie frisch aus dem Internet gesaugt. Als utf8.
Naja egal, da ich in dem TMEMO nur eine Search/Replace routine mache, habe ich es als DEFAULT Encoding
geladen, das geht. und ich save sie wieder mit default encoding raus.

Danke jedoch für den Tipp.

himitsu 3. Mär 2016 09:38

AW: UTF8 in TMEMO laden
 
Ist ein BOM vorhanden, wird das Encoding ignoriert und naütrlich das BOM verwendet.
Beim Laden gibt man das "Default"-Encoding an, wenn die Datei keine Kennung enthält.

Zitat:

Ich tippe darauf das die Datei nicht fehlerfrei Codiert ist oder Probleme mit dem BOM der Datei gibt.
Bzw. es ist ein URF-8.

Der Fehler gibt an, daß "ungültige" Zeichen gefunden wurden, welche nicht zur gewählten CodePage gehören.

wschrabi 3. Mär 2016 09:49

AW: UTF8 in TMEMO laden
 
Danke,
ich denke es sind einige mathematische Zeichen drin, aber wieso kann das Slickedit, und MEMO nicht?
Slickedit hat ja auch die gleiche Codepage.
mfg
ws

himitsu 3. Mär 2016 10:10

AW: UTF8 in TMEMO laden
 
Es gibt mehrere Wege, um mit Problemen umzugehen:
  • man wirft einen Fehler, wenn etwas nicht stimmt (LoadFromFile / TEncoding)
  • man macht einfach wortlos garnichts (Delphi-Referenz durchsuchenUtf8Decode Delphi-Referenz durchsuchenUTF8ToString) und gibt einen leeren Text zurück
  • man ignoriert nur die ungültigen Zeichen, bzw. wandelt sie um. (TypeCast von UnicodeString zu AnsiString/UTF8String)
    Offiziell gibt es im Unicode ein Eratzzeichen dafür, aber viele verwenden das "?"
  • man probierte andere Encodings, bis man Eines hat, was keinen Fehler wirft
  • man wendet eine Textanalyse an und versucht die CodePage zu "erraten"
    Hier im Forum suchenencoding ermitteln / Hier im Forum suchencodepage ermitteln

Slickedit macht jedenfalls nicht Punkt 1 oder 2. :stupid:


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