Was könnte dazu führen, dass auf der Ziel-Multibyte-Codepage keine Zuordnung für das Unicode-Zeichen existiert?

8

Ich habe einen EurekaLog-Fehlerbericht, der EEncodingError anzeigt. Das Protokoll zeigt auf TFile.AppendAllText . Ich rufe TFile.AppendAllText ist diese Prozedur von mir:

%Vor%

Dies ist die Information von EurekaLog.

Was kann dazu führen, dass dies geschieht?

    
Sahara 29.02.2016, 20:18
quelle

1 Antwort

11

Dieses Programm reproduziert den von Ihnen gemeldeten Fehler:

%Vor%

Hier habe ich die Originaldatei als ANSI geschrieben. Und dann AppendAllText aufgerufen, die versuchen werden, als UTF-8 zu schreiben. Was passiert, ist, dass wir in dieser Funktion enden:

%Vor%

Der Fehler stammt von dieser Zeile:

%Vor%

Das Problem ist, dass UTFStr tatsächlich nicht gültig ist UTF-8 . Und daher löst TEncoding.UTF8.GetString(UTFStr) eine Ausnahme aus.

Dies ist ein Fehler in TFile.AppendAllBytes . Da es sehr gut weiß, dass UTFStr ANSI codiert ist, macht es überhaupt keinen Sinn, TEncoding.UTF8.GetString aufzurufen.

Sie sollten einen Fehlerbericht an Embarcadero für diesen Defekt senden, der in Delphi 10 Seattle noch vorhanden ist. In der Zwischenzeit sollten Sie TFile.AppendAllBytes nicht verwenden.

    
David Heffernan 29.02.2016, 20:35
quelle

Tags und Links