我想知道是否有一种简单的方法来检测剪贴板上的文本是使用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);
}
}
}
最佳答案
在this Microsoft page上检查CF_LOCALE的定义。它告诉您剪贴板中文本的语言环境。更好的是,如果您改用CF_UNICODETEXT,则Windows将为您转换为UTF-16。
关于c++ - 如何判断Windows剪贴板上的文本是C++中的ISO 8859还是UTF-8?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/165551/