Ok, this was a fun one to track down. In short, the TWC/WU API is returning the WRONG UTF-8 character for the degree sign.
They are using \xc2\xba instead of the expected \xc2\xb0.
From the UTF-8 definitions:
\xc2\xba is º MASCULINE ORDINAL INDICATOR (HTML º · º) (superscript letter o used in abbreviating words; varies with the font and sometimes underlined)
while
\xc2\xb0 is ° DEGREE SIGN (HTML ° · °)
The two different characters may look alike, but iconv() function may not have the translation for the \xc2\xb2 symbol, so shows as a ?
Here's the fix -- change WC-forecast.php $WCforecasttext[$n] = trim($FCpart['narrative'][$i]);
if($doIconv) {$WCforecasttext[$n] = iconv($charsetInput,$charsetOutput.'//TRANSLIT',$WCforecasttext[$n]);}
to $WCforecasttext[$n] = trim($FCpart['narrative'][$i]);
$WCforecasttext[$n] = str_replace("\xc2\xba","\xc2\xb0",$WCforecasttext[$n]); // fix wrong degree symbol
if($doIconv) {$WCforecasttext[$n] = iconv($charsetInput,$charsetOutput.'//TRANSLIT',$WCforecasttext[$n]);}
and that should do it.