1) Написал граббер.
2) Запрашиваемая странца в кодировке UTF 8
3) Конечный сайт - win1251
4) При просмотре результата - кракозябры, соответственно.
Вопрос: как можно сменить кодировку при отдаче в браузер
function utf2win($str,$type="w"){
static $conv;
if( !is_array($conv) ){
// ASCII 128 - 255
$conv['w'] = array(
"\x80","\x81","\x82","\x83","\x84","\x85","\x86","\x87","\x88","\x89","\x8a","\x8b","\x8c","\x8d","\x8e","\x8f",
"\x90","\x91","\x92","\x93","\x94","\x95","\x96","\x97","\x98","\x99","\x9a","\x9b","\x9c","\x9d","\x9e","\x9f",
"\xa0","\xa1","\xa2","\xa3","\xa4","\xa5","\xa6","\xa7","\xa8","\xa9","\xaa","\xab","\xac","\xad","\xae","\xaf",
"\xb0","\xb1","\xb2","\xb3","\xb4","\xb5","\xb6","\xb7","\xb8","\xb9","\xba","\xbb","\xbc","\xbd","\xbe","\xbf",
"\xc0","\xc1","\xc2","\xc3","\xc4","\xc5","\xc6","\xc7","\xc8","\xc9","\xca","\xcb","\xcc","\xcd","\xce","\xcf",
"\xd0","\xd1","\xd2","\xd3","\xd4","\xd5","\xd6","\xd7","\xd8","\xd9","\xda","\xdb","\xdc","\xdd","\xde","\xdf",
"\xe0","\xe1","\xe2","\xe3","\xe4","\xe5","\xe6","\xe7","\xe8","\xe9","\xea","\xeb","\xec","\xed","\xee","\xef",
"\xf0","\xf1","\xf2","\xf3","\xf4","\xf5","\xf6","\xf7","\xf8","\xf9","\xfa","\xfb","\xfc","\xfd","\xfe","\xff");
$conv['u'] = array(
"\xd0\x82","\xd0\x83","\xe2\x80\x9a","\xd1\x93","\xe2\x80\x9e","\xe2\x80\xa6","\xe2\x80\xa0","\xe2\x80\xa1","\xe2\x82\xac","\xe2\x80\xb0","\xd0\x89","\xe2\x80\xb9","\xd0\x8a","\xd0\x8c","\xd0\x8b","\xd0\x8f",
"\xd1\x92","\xe2\x80\x98","\xe2\x80\x99","\xe2\x80\x9c","\xe2\x80\x9d","\xe2\x80\xa2","\xe2\x80\x93","\xe2\x80\x94","","\xe2\x84\xa2","\xd1\x99","\xe2\x80\xba","\xd1\x9a","\xd1\x9c","\xd1\x9b","\xd1\x9f",
"\xc2\xa0","\xd0\x8e","\xd1\x9e","\xd0\x88","\xc2\xa4","\xd2\x90","\xc2\xa6","\xc2\xa7","\xd0\x81","\xc2\xa9","\xd0\x84","\xc2\xab","\xc2\xac","\xc2\xad","\xc2\xae","\xd0\x87",
"\xc2\xb0","\xc2\xb1","\xd0\x86","\xd1\x96","\xd2\x91","\xc2\xb5","\xc2\xb6","\xc2\xb7","\xd1\x91","\xe2\x84\x96","\xd1\x94","\xc2\xbb","\xd1\x98","\xd0\x85","\xd1\x95","\xd1\x97",
"\xd0\x90","\xd0\x91","\xd0\x92","\xd0\x93","\xd0\x94","\xd0\x95","\xd0\x96","\xd0\x97","\xd0\x98","\xd0\x99","\xd0\x9a","\xd0\x9b","\xd0\x9c","\xd0\x9d","\xd0\x9e","\xd0\x9f",
"\xd0\xa0","\xd0\xa1","\xd0\xa2","\xd0\xa3","\xd0\xa4","\xd0\xa5","\xd0\xa6","\xd0\xa7","\xd0\xa8","\xd0\xa9","\xd0\xaa","\xd0\xab","\xd0\xac","\xd0\xad","\xd0\xae","\xd0\xaf",
"\xd0\xb0","\xd0\xb1","\xd0\xb2","\xd0\xb3","\xd0\xb4","\xd0\xb5","\xd0\xb6","\xd0\xb7","\xd0\xb8","\xd0\xb9","\xd0\xba","\xd0\xbb","\xd0\xbc","\xd0\xbd","\xd0\xbe","\xd0\xbf",
"\xd1\x80","\xd1\x81","\xd1\x82","\xd1\x83","\xd1\x84","\xd1\x85","\xd1\x86","\xd1\x87","\xd1\x88","\xd1\x89","\xd1\x8a","\xd1\x8b","\xd1\x8c","\xd1\x8d","\xd1\x8e","\xd1\x8f");
}//if
if ($type == 'w') return str_replace($conv['u'],$conv['w'],$str);
elseif ($type == 'u') return str_replace($conv['w'], $conv['u'],$str);
else return $str;
}
function Utf8Win($str,$type="w") {
static $conv='';
if (!is_array($conv)) {
$conv = array();
for($x=128;$x<=143;$x++) {
$conv['u'][]=chr(209).chr($x);
$conv['w'][]=chr($x+112);
}
for($x=144;$x<=191;$x++) {
$conv['u'][]=chr(208).chr($x);
$conv['w'][]=chr($x+48);
}
$conv['u'][]=chr(208).chr(129);
$conv['w'][]=chr(168);
$conv['u'][]=chr(209).chr(145);
$conv['w'][]=chr(184);
$conv['u'][]=chr(208).chr(135);
$conv['w'][]=chr(175);
$conv['u'][]=chr(209).chr(151);
$conv['w'][]=chr(191);
$conv['u'][]=chr(208).chr(134);
$conv['w'][]=chr(178);
$conv['u'][]=chr(209).chr(150);
$conv['w'][]=chr(179);
$conv['u'][]=chr(210).chr(144);
$conv['w'][]=chr(165);
$conv['u'][]=chr(210).chr(145);
$conv['w'][]=chr(180);
$conv['u'][]=chr(208).chr(132);
$conv['w'][]=chr(170);
$conv['u'][]=chr(209).chr(148);
$conv['w'][]=chr(186);
$conv['u'][]=chr(226).chr(132).chr(150);
$conv['w'][]=chr(185);
}
if ($type == 'w') {
return str_replace($conv['u'],$conv['w'],$str);
} elseif ($type == 'u') {
return str_replace($conv['w'], $conv['u'],$str);
} else {
return $str;
}
}