在 ansistring 中存在 Unicode 字符或 UTF8 字符的情况下,是否可以从字符串中删除字符?在这种特殊情况下, ansistring 包含 EXIF 参数。
编辑
当字符串被读取时,它会显示为:版权所有 © 2013 The States of Guernsey (Guernsey Museums & Galleries)
在一种情况下,版权符号 © 被编码为 UTF-8 序列(即 0xc2 和 0xa9)。Delphi 7 和 Delphi 2010 将其显示为 ascii,显示一个“”(C2)和一个“©”(A9),忽略这是一个 UTF8 序列。Exif 标签和版权标签 (33432) 应该是简单的 ASCII,而不是 UTF8 或 unicode。
因此,如果 ansistring 包含一个或多个这些字符,可以将它们从字符串中剥离,还是必须手动编辑?
编辑2
试图恢复我试过的UTF8:
// 从字符串中删除空终止符(图像单元的一部分} function RemoveNull(sValue: string): string; begin result := trim(svalue); if (result <> '') and (result[length(result) ] = #0) 然后 SetLength(result, length(result) - 1); result := trim(result); end;
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;
但这不会编译...