如何将西里尔文剪贴板文本转换为windows-1257编码

时间:2017-03-09 21:32:24

标签: winapi unicode character-encoding visual-foxpro cyrillic

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

但俄语字符不会出现在任何行中。 例如,Аналитика产生输出

enter image description here

如何将俄罗斯剪贴板数据转换为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

0 个答案:

没有答案