In practice, one can usually do much better with a correct application of a commonplace algorithm than by sloppily applying an obscure algorithm.
They’re tabs. By default, VIM shows all control characers other than EOL as ^n where n is the character of the alphabet corresponding to the character being shown (tab = char #9, I = 9th char in alphabet). To stop showing them, use :set nolist…
^n
n
I
:set nolist
awk -F, ‘{print NF}’ filename