Unicode 文字または UTF8 文字が ansistring に存在する場合、文字列から文字を取り除くことは可能ですか? この特定のケースでは、ansistring に EXIF パラメータが含まれています。
編集
文字列を読み取ると、次のように表示されます: Copyright © 2013 The States of Guernsey (Guernsey Museums & Galleries)
ある場合、著作権記号 © は UTF-8 シーケンス (つまり、0xc2 と 0xa9) としてエンコードされます。Delphi 7 および Delphi 2010 では、ASCII として表示され、「Â」(C2)と「©」(A9)が表示され、UTF8 シーケンスは無視されます。Exif タグと Copyright タグ (33432) は、UTF8 や Unicode ではなく、単純な ASCII にする必要があります。
ansistring にこれらの文字が 1 つ以上含まれている場合、それらを文字列から削除できますか、それとも手動で編集する必要がありますか?
編集2
私が試したUTF8を回復しようとしています:
// 文字列から null ターミネータを削除します (imageen unit の一部} function RemoveNull(sValue: string): string; begin result := trim(svalue); if (result <> '') and (result[length(result) ] = #0) 次に SetLength(結果, 長さ(結果) - 1); 結果:= トリム(結果); 終了;
EXIF_Copyright: ImageEn によって AnsiString として定義されています。utf8: UTF8文字列;
// EXIF_Copyright
// Shows copyright information
SetLength(utf8, Length(EXIF_Copyright)); // [DCC Error] iexEXIFRoutines.pas(911): E2026 Constant expression expected
Move(Pointer(EXIF_Copyright)^, Pointer(utf8)^, Length(EXIF_Copyright)));
_EXIF_Copyright: result := RemoveNull(EXIF_Copyright);
残念ながら、私は UTF8 を扱った経験がほとんどありません。
EXIF_Copyright は ansistring です。
しかし、これはコンパイルされません...