Visual FoxPro 9网格控件文本字段包含俄语字符。 Font charset设置为Cyrillic。
如果俄语文本从网页粘贴到此字段,???字符出现而不是俄文字母。
我试过
CLEAR
_screen.FontCharSet= 204
cContents = STRCONV(_cliptext,9,1251,1)
?ccontents
cContents = STRCONV(_cliptext,6,1251,1)
?ccontents
cContents = STRCONV(cContents,9,1251,1)
?ccontents
FOR i=1 TO 15
?i,STRCONV(_cliptext,i)
ENDFOR
但俄语字符不会出现在任何行中。 例如,Аналитика产生输出
如何将俄罗斯剪贴板数据转换为Windows 1251编码? 可以使用一些foxpro或windows API函数吗?
更新
我在http://www.news2news.com/vfp/?function=-1&example=31尝试了下面的代码并将单个英文字符复制到剪贴板但不会返回 有效的格式数是5.如何将原始剪贴板内容作为unicode数据?
CLEAR
_screen.FontCharSet= 204
#DEFINE CF_TEXT 1
#DEFINE CF_BITMAP 2
#DEFINE CF_METAFILEPICT 3
#DEFINE CF_SYLK 4
#DEFINE CF_TIFF 6
#DEFINE CF_DIF 5
#DEFINE CF_OEMTEXT 7
#DEFINE CF_DIB 8
#DEFINE CF_PALETTE 9
#DEFINE CF_PENDATA 10
#DEFINE CF_RIFF 11
#DEFINE CF_WAVE 12
#DEFINE CF_UNICODETEXT 13
#DEFINE CF_ENHMETAFILE 14
#DEFINE CF_HDROP 15
#DEFINE CF_LOCALE 16
#DEFINE CF_DIBV5 17
DO declare
ncount=CountClipboardFormats()
? "Number of formats currently on the clipboard: ", ncount
cBuffer = Chr(CF_TEXT) + Repli(Chr(0),3) +;
Chr(CF_OEMTEXT) + Repli(Chr(0),3) +;
Chr(CF_UNICODETEXT) + Repli(Chr(0),3)
? "First available text format, ID: " +;
LTRIM(STR(GetPriorityClipboardFormat(@cBuffer, 3)))
?'Buffer: ', cbuffer
PROCEDURE declare
DECLARE INTEGER CountClipboardFormats IN user32
DECLARE INTEGER GetPriorityClipboardFormat IN user32;
STRING @paFormatPriorityList, INTEGER cFormats
RETURN