Ansi版Delphi的剪贴板也是用Ansi字符串实现的,Clipboard.AsText是用CF_TEXT方式,设置和获取的都是AnsiString类型,处理中文时就是乱码,直接改Clipbrd单元当然不是好办法,嗯,可以在TClipboard上继承一个新类来实现:
TUnicodeClipboard = class(TClipboard)
private
function GetAsUnicodeText: WideString;
procedure SetAsUnicodeText(const Value: WideString);
public
property AsUnicodeText: WideString read GetAsUnicodeText write SetAsUnicodeText;
end;
使用时:
var
s: string;
begin
s := TUnicodeClipboard(Clipboard).AsUnicodeText;
end;