(Omlouvam se za dlouhy post)
no a je tu kompletni funkcni verze.
1) soubor isogen.php - vygeneruje vsechny znaky, ktere by se mohly lisit - s ascii kodech od 32 do 255 - to je jistota. Jak nazev napovida, v ISO-8859-2;
Kód:
<?
$fp = fopen("./iso.char", "w");
for ($i = 32; $i < 256; $i++)
fputs($fp, chr($i));
fclose($fp);
echo "done";
?>
nasledne linuxovym prikazem
iconv -f ISO-8859-2 -t UTF8 iso.char > utf8.char;
prekodujem do UTF8;
dalsi skript conv.php: vyrobi prevodni pole pro strtr:
Kód:
<?
$fi = fopen("./iso.char", "r");
$fu = fopen("./utf8.char", "r");
$fp = fopen("./convtab.php", "w");
$utf = fgets($fu, 1024);
$iso = fgets($fi, 1024);
fputs($fp, "<?");
$k = 0;
for ($i = 0; $i<strlen($iso); $i++)
{
$ASCIIISO = ord(substr($iso, $i, 1));
$ASCIIUTF1 = ord(substr($utf, $k, 1));
$k++;
$dif = 0;
if ($ASCIIISO != $ASCIIUTF1) //kdyz se znaky lisi, nactem i dalsi byte;
{
$ASCIIUTF2 = ord(substr($utf,$k,1));
$k++;
$dif = 1;
}
$line = "\$pole[chr($ASCIIUTF1).chr($ASCIIUTF2)] = chr($ASCIIISO); //".chr($ASCIIISO)."\n";
if ($dif) fputs($fp, $line); //a kdyz se lisi, vyrobime prislusny radek;
echo "$ASCIIISO => $ASCIIUTF1, $ASCIIUTF2
";
}
fputs($fp, "?>");
fclose($fp);
fclose($fi);
fclose($fu);
echo "finished\n\$k:$k\n\$i:$i";
?>
Vratil u k hodnotu, ktera se presne rovnala delce souboru utf8.char, podobne u i a iso.char. takze to vyslo presne..
No a tady je, co z toho vylezlo:
Kód:
<?$pole[chr(194).chr(128)] = chr(128); //?
$pole[chr(194).chr(129)] = chr(129); //?
$pole[chr(194).chr(130)] = chr(130); //?
$pole[chr(194).chr(131)] = chr(131); //?
$pole[chr(194).chr(132)] = chr(132); //?
$pole[chr(194).chr(133)] = chr(133); //?
$pole[chr(194).chr(134)] = chr(134); //?
$pole[chr(194).chr(135)] = chr(135); //?
$pole[chr(194).chr(136)] = chr(136); //?
$pole[chr(194).chr(137)] = chr(137); //?
$pole[chr(194).chr(138)] = chr(138); //?
$pole[chr(194).chr(139)] = chr(139); //?
$pole[chr(194).chr(140)] = chr(140); //?
$pole[chr(194).chr(141)] = chr(141); //?
$pole[chr(194).chr(142)] = chr(142); //?
$pole[chr(194).chr(143)] = chr(143); //?
$pole[chr(194).chr(144)] = chr(144); //?
$pole[chr(194).chr(145)] = chr(145); //?
$pole[chr(194).chr(146)] = chr(146); //?
$pole[chr(194).chr(147)] = chr(147); //?
$pole[chr(194).chr(148)] = chr(148); //?
$pole[chr(194).chr(149)] = chr(149); //?
$pole[chr(194).chr(150)] = chr(150); //?
$pole[chr(194).chr(151)] = chr(151); //?
$pole[chr(194).chr(152)] = chr(152); //?
$pole[chr(194).chr(153)] = chr(153); //?
$pole[chr(194).chr(154)] = chr(154); //?
$pole[chr(194).chr(155)] = chr(155); //?
$pole[chr(194).chr(156)] = chr(156); //?
$pole[chr(194).chr(157)] = chr(157); //?
$pole[chr(194).chr(158)] = chr(158); //?
$pole[chr(194).chr(159)] = chr(159); //?
$pole[chr(194).chr(160)] = chr(160); //
$pole[chr(196).chr(132)] = chr(161); //Ą
$pole[chr(203).chr(152)] = chr(162); //˘
$pole[chr(197).chr(129)] = chr(163); //Ł
$pole[chr(194).chr(164)] = chr(164); //¤
$pole[chr(196).chr(189)] = chr(165); //Ľ
$pole[chr(197).chr(154)] = chr(166); //Ś
$pole[chr(194).chr(167)] = chr(167); //§
$pole[chr(194).chr(168)] = chr(168); //¨
$pole[chr(197).chr(160)] = chr(169); //Š
$pole[chr(197).chr(158)] = chr(170); //Ş
$pole[chr(197).chr(164)] = chr(171); //Ť
$pole[chr(197).chr(185)] = chr(172); //Ź
$pole[chr(194).chr(173)] = chr(173); //
$pole[chr(197).chr(189)] = chr(174); //Ž
$pole[chr(197).chr(187)] = chr(175); //Ż
$pole[chr(194).chr(176)] = chr(176); //°
$pole[chr(196).chr(133)] = chr(177); //ą
$pole[chr(203).chr(155)] = chr(178); //˛
$pole[chr(197).chr(130)] = chr(179); //ł
$pole[chr(194).chr(180)] = chr(180); //´
$pole[chr(196).chr(190)] = chr(181); //ľ
$pole[chr(197).chr(155)] = chr(182); //ś
$pole[chr(203).chr(135)] = chr(183); //ˇ
$pole[chr(194).chr(184)] = chr(184); //¸
$pole[chr(197).chr(161)] = chr(185); //š
$pole[chr(197).chr(159)] = chr(186); //ş
$pole[chr(197).chr(165)] = chr(187); //ť
$pole[chr(197).chr(186)] = chr(188); //ź
$pole[chr(203).chr(157)] = chr(189); //˝
$pole[chr(197).chr(190)] = chr(190); //ž
$pole[chr(197).chr(188)] = chr(191); //ż
$pole[chr(197).chr(148)] = chr(192); //Ŕ
$pole[chr(195).chr(129)] = chr(193); //Á
$pole[chr(195).chr(130)] = chr(194); //Â
$pole[chr(196).chr(130)] = chr(195); //Ă
$pole[chr(195).chr(132)] = chr(196); //Ä
$pole[chr(196).chr(185)] = chr(197); //Ĺ
$pole[chr(196).chr(134)] = chr(198); //Ć
$pole[chr(195).chr(135)] = chr(199); //Ç
$pole[chr(196).chr(140)] = chr(200); //Č
$pole[chr(195).chr(137)] = chr(201); //É
$pole[chr(196).chr(152)] = chr(202); //Ę
$pole[chr(195).chr(139)] = chr(203); //Ë
$pole[chr(196).chr(154)] = chr(204); //Ě
$pole[chr(195).chr(141)] = chr(205); //Í
$pole[chr(195).chr(142)] = chr(206); //Î
$pole[chr(196).chr(142)] = chr(207); //Ď
$pole[chr(196).chr(144)] = chr(208); //Đ
$pole[chr(197).chr(131)] = chr(209); //Ń
$pole[chr(197).chr(135)] = chr(210); //Ň
$pole[chr(195).chr(147)] = chr(211); //Ó
$pole[chr(195).chr(148)] = chr(212); //Ô
$pole[chr(197).chr(144)] = chr(213); //Ő
$pole[chr(195).chr(150)] = chr(214); //Ö
$pole[chr(195).chr(151)] = chr(215); //×
$pole[chr(197).chr(152)] = chr(216); //Ř
$pole[chr(197).chr(174)] = chr(217); //Ů
$pole[chr(195).chr(154)] = chr(218); //Ú
$pole[chr(197).chr(176)] = chr(219); //Ű
$pole[chr(195).chr(156)] = chr(220); //Ü
$pole[chr(195).chr(157)] = chr(221); //Ý
$pole[chr(197).chr(162)] = chr(222); //Ţ
$pole[chr(195).chr(159)] = chr(223); //ß
$pole[chr(197).chr(149)] = chr(224); //ŕ
$pole[chr(195).chr(161)] = chr(225); //á
$pole[chr(195).chr(162)] = chr(226); //â
$pole[chr(196).chr(131)] = chr(227); //ă
$pole[chr(195).chr(164)] = chr(228); //ä
$pole[chr(196).chr(186)] = chr(229); //ĺ
$pole[chr(196).chr(135)] = chr(230); //ć
$pole[chr(195).chr(167)] = chr(231); //ç
$pole[chr(196).chr(141)] = chr(232); //č
$pole[chr(195).chr(169)] = chr(233); //é
$pole[chr(196).chr(153)] = chr(234); //ę
$pole[chr(195).chr(171)] = chr(235); //ë
$pole[chr(196).chr(155)] = chr(236); //ě
$pole[chr(195).chr(173)] = chr(237); //í
$pole[chr(195).chr(174)] = chr(238); //î
$pole[chr(196).chr(143)] = chr(239); //ď
$pole[chr(196).chr(145)] = chr(240); //đ
$pole[chr(197).chr(132)] = chr(241); //ń
$pole[chr(197).chr(136)] = chr(242); //ň
$pole[chr(195).chr(179)] = chr(243); //ó
$pole[chr(195).chr(180)] = chr(244); //ô
$pole[chr(197).chr(145)] = chr(245); //ő
$pole[chr(195).chr(182)] = chr(246); //ö
$pole[chr(195).chr(183)] = chr(247); //÷
$pole[chr(197).chr(153)] = chr(248); //ř
$pole[chr(197).chr(175)] = chr(249); //ů
$pole[chr(195).chr(186)] = chr(250); //ú
$pole[chr(197).chr(177)] = chr(251); //ű
$pole[chr(195).chr(188)] = chr(252); //ü
$pole[chr(195).chr(189)] = chr(253); //ý
$pole[chr(197).chr(163)] = chr(254); //ţ
$pole[chr(203).chr(153)] = chr(255); //˙
?>
Je to dlouhy, ale pokryva to vsechny znaky.. Neni problem napsat funkci, ktera dany text prozene strtr-em, ktery bude mit za druhy parametr tohle pole.
trada, 100% funkce UTF2ISO je na svete
Co dostanu?