Набросал функции перевода UTF-8<==>Windows-1251, не зависящие от наличия iconv и/или mbstring. Кто разбирается — проверьте правильность кода.
$ents = array(
'…'=>'…','†'=>'†','‡'=>'‡','€'=>'?','‰'=>'‰','•'=>'•','–'=>'–','—'=>'—','™'=>'™',' '=>' ','¤'=>'¤','¦'=>'¦','§'=>'§','©'=>'©','«'=>'«','¬'=>'¬','­'=>'','®'=>'®','°'=>'°','±'=>'±','µ'=>'µ','¶'=>'¶','·'=>'·','»'=>'»',
'Ђ'=>'Ђ','Ѓ'=>'Ѓ','‚'=>'‚','ѓ'=>'ѓ','„'=>'„','Љ'=>'Љ','‹'=>'‹','Њ'=>'Њ','Ќ'=>'Ќ','Ћ'=>'Ћ','Џ'=>'Џ','ђ'=>'ђ','‘'=>'‘','’'=>'’','‛'=>'“','“'=>'”','љ'=>'љ','›'=>'›','њ'=>'њ','ќ'=>'ќ','ћ'=>'ћ','џ'=>'џ','Ў'=>'Ў','ў'=>'ў','Ј'=>'Ј','Ґ'=>'Ґ','Ё'=>'Ё','Є'=>'Є','Ї'=>'Ї','І'=>'І','і'=>'і','ґ'=>'ґ','ё'=>'ё','№'=>'№','є'=>'є','ј'=>'ј','Ѕ'=>'Ѕ','ѕ'=>'ѕ','ї'=>'ї','А'=>'А','Б'=>'Б','В'=>'В','Г'=>'Г','Д'=>'Д','Е'=>'Е','Ж'=>'Ж','З'=>'З','И'=>'И','Й'=>'Й','К'=>'К','Л'=>'Л','М'=>'М','Н'=>'Н','О'=>'О','П'=>'П','Р'=>'Р','С'=>'С','Т'=>'Т','У'=>'У','Ф'=>'Ф','Х'=>'Х','Ц'=>'Ц','Ч'=>'Ч','Ш'=>'Ш','Щ'=>'Щ','Ъ'=>'Ъ','Ы'=>'Ы','Ь'=>'Ь','Э'=>'Э','Ю'=>'Ю','Я'=>'Я','а'=>'а','б'=>'б','в'=>'в','г'=>'г','д'=>'д','е'=>'е','ж'=>'ж','з'=>'з','и'=>'и','й'=>'й','к'=>'к','л'=>'л','м'=>'м','н'=>'н','о'=>'о','п'=>'п','р'=>'р','с'=>'с','т'=>'т','у'=>'у','ф'=>'ф','х'=>'х','ц'=>'ц','ч'=>'ч','ш'=>'ш','щ'=>'щ','ъ'=>'ъ','ы'=>'ы','ь'=>'ь','э'=>'э','ю'=>'ю','я'=>'я' );
function utf2win($s)
{
global $ents;
if(phpversion()>="4.1")
{
$s = htmlentities( $s, ENT_NOQUOTES, "UTF-8" );
$s = strtr( $s, array('<'=>'<','>'=>'>','&'=>'&','"'=>'"') );
}
$len = strlen($s);
$tgt = '';
for($i=0; $i<$len; $i++)
{
$c = $s[$i];
$x = ord($c);
if($x<0x80) $tgt.=$c;
elseif(($x & 0xC0) == 0xC0)
{
$n = 1;
while( ($x & (0x40 >> $n)) > 0) $n++;
$code = $x & (0x3F >> $n);
for($k=1; $k<=$n; $k++) $code = ($code << 6) + (ord($s[$i+$k]) & 0x3F);
$i += $n;
$tgt .= '&#'.$code.';';
}
else $tgt .= '?';
}
$tgt = strtr( $tgt, $ents );
return $tgt;
}
function win2utf($s)
{
global $ents;
$tgt = strtr( $s, array_flip($ents) );
if(phpversion()>="4.3")
$tgt = html_entity_decode( $tgt, ENT_NOQUOTES, "UTF-8" );
return $tgt;
}