【发布时间】:2010-09-14 23:58:38
【问题描述】:
我想知道是否有一种简单的方法可以检测剪贴板上的文本是 ISO 8859 还是 UTF-8 格式?
这是我当前的代码:
COleDataObject obj;
if (obj.AttachClipboard())
{
if (obj.IsDataAvailable(CF_TEXT))
{
HGLOBAL hmem = obj.GetGlobalData(CF_TEXT);
CMemFile sf((BYTE*) ::GlobalLock(hmem),(UINT) ::GlobalSize(hmem));
CString buffer;
LPSTR str = buffer.GetBufferSetLength((int)::GlobalSize(hmem));
sf.Read(str,(UINT) ::GlobalSize(hmem));
::GlobalUnlock(hmem);
//this is my string class
s->SetEncoding(ENCODING_8BIT);
s->SetString(buffer);
}
}
}
【问题讨论】:
-
ISO 8859-什么?有 8859-1、8859-2 等。
-
问题的一部分是它似乎也是未知的。你需要 CF_LOCALE 来告诉你。一旦你有了它,整个问题就几乎得到了回答。
标签: c++ windows utf-8 clipboard