yes, this issue (bug) is very confusing. To better understand what is happening, I have adjusted the sample again:
function Main()
local oDlg
local oGet
local oEdit
local oMulti
local oMemo
local cVar1 := "üäö"
local cVar2 := "üäö"
local cVar3 := "üäö"
local cVar4 := "üäö"
REQUEST HB_CODEPAGE_UTF8
HB_CDPSELECT( "UTF8" )
FW_SetUnicode( .T. )
DEFINE DIALOG oDlg SIZE 600, 600 PIXEL TRUEPIXEL
@ 20, 20 GET oGet VAR cVar1 SIZE 200,20 PIXEL OF oDlg VARCHAR 20
@ 40,20 EDIT oEdit VAR cVar2 SIZE 200,20 PIXEL OF oDlg
@ 60, 20 GET oMulti VAR cVar3 MULTILINE SIZE 200, 50 PIXEL OF oDlg
@ 120, 20 GET oMemo VAR cVar4 MEMO OF oDlg PIXEL SIZE 400, 100
@ 240, 20 BUTTON "CHECK" SIZE 100,40 PIXEL OF oDlg ;
ACTION MsgInfo( ;
"oGet/TGet(): " + cVar1 + " - " + StrToHex( cVar1, " " ) + CRLF + CRLF + ;
"oEdit/TEdit(): " + cVar2 + " - " + StrToHex( cVar2, " " ) + CRLF + CRLF + ;
"oMulti/TMultiGet(): " + cVar3 + " - " + StrToHex( cVar3, " " ) + CRLF + CRLF + ;
"oMemo/TMultiGet(): " + cVar4 + " - " + StrToHex( cVar4, " " ) ;
)
ACTIVATE DIALOG oDlg CENTERED
RETURN NIL
Screenshot before editing:

Screenshot after editing:
I marked the results
I think are correct in
green, the wrong ones in
red.
As already mentioned above, the UTF-8 codes in MsgInfo() are also misinterpreted.
The hex codes marked in
red are the Unicode equivalents to the corresponding characters. It can be assumed that the characters are incorrectly converted (not to UTF-8) by FWH in several places in the source.