【发布时间】:2013-05-05 10:12:56
【问题描述】:
如果 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:
// 从字符串中删除空终止符(图像单元的一部分} 函数 RemoveNull(sValue: string): string; 开始 结果:=修剪(svalue); 如果(结果'')和 (结果[长度(结果)] = #0) 然后 SetLength(结果,长度(结果) - 1); 结果:=修剪(结果); 结束;
EXIF_Copyright:由ImageEn定义为AnsiString; utf8: UTF8String;
// 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;
但这不会编译...
【问题讨论】:
-
如果它的 ansistring 不能访问所有字符?
标签: delphi delphi-2010