I am getting the character under the cursor in vimscript the following way:
getline(\'.\')[col(\'.\')-1]
It works exactly like it should,
nr2char(strgetchar(getline('.')[col('.') - 1:], 0))
or
strcharpart(getline('.')[col('.') - 1:], 0, 1)