iconv, writes on stdout, cannot do inplace:
iconv
iconv -l iconv -f latin1 -t utf8 <file>
recode does inplace by default:
recode
recode -l recode latin1..utf8 <file>
chardetect