Ja u siebie rozwiązałęm problem inaczej - użytkownik sam sobie wybiera jakie chce kodowanie (jak bardzo chce :P) i zapisuje się w bazie jak chce, tyle tylko, że przed wyświetleniem strony konwertuje funkcją poniżej. Zalety funkcji są takie, że nie podaje kodowania źródłowego (Win-1250, ISO, czy UTF), a tylko wynikowe... W praktyce mogę sobie zarządzać stroną zarówno na Win98, na którym jest tylko notatnik (i win-1250), jak i linuxie, na ktorym raczej wina nie bedzie :P. Poza tym nie mam problemów z konwersją do XML (konkretnie RSS), w ktorym podobno zalecany jest UTF...
pytanie moje tylko: czy taka funkcja jest ok? bo ją troche na szybko przerobiłem z jakiejśtam innej :)
function my_iconv($to, $string)
{ //TODO: problemy z konwersja z UTF, konwersja do innych kodowan, usun powtarzajace sie znaki
$x2utf = array(
"\xb1" => "\xc4\x85", "\xa1" => "\xc4\x84", "\xe6" => "\xc4\x87", "\xc6" => "\xc4\x86",
"\xea" => "\xc4\x99", "\xca" => "\xc4\x98", "\xb3" => "\xc5\x82", "\xa3" => "\xc5\x81",
"\xf3" => "\xc3\xb3", "\xd3" => "\xc3\x93", "\xb6" => "\xc5\x9b", "\xa6" => "\xc5\x9a",
"\xbc" => "\xc5\xbc", "\xac" => "\xc5\xbb", "\xbf" => "\xc5\xba", "\xaf" => "\xc5\xb9",
"\xf1" => "\xc5\x84", "\xd1" => "\xc5\x83",
"\xb9" => "\xc4\x85", "\xa5" => "\xc4\x84", "\xe6" => "\xc4\x87", "\xc6" => "\xc4\x86",
"\xea" => "\xc4\x99", "\xca" => "\xc4\x98", "\xb3" => "\xc5\x82", "\xa3" => "\xc5\x81",
"\xf3" => "\xc3\xb3", "\xd3" => "\xc3\x93", "\x9c" => "\xc5\x9b", "\x8c" => "\xc5\x9a",
"\x9f" => "\xc5\xbc", "\x8f" => "\xc5\xbb", "\xbf" => "\xc5\xba", "\xaf" => "\xc5\xb9",
"\xf1" => "\xc5\x84", "\xd1" => "\xc5\x83" );
$utfflip = array("\xc5\xbc" => "\xc5\xba", "\xc5\xbb" => "\xc5\xb9", "\xc5\xba" => "\xc5\xbc", "\xc5\xb9" => "\xc5\xbb");
$win2utf = array(
"\xb9" => "\xc4\x85", "\xa5" => "\xc4\x84", "\xe6" => "\xc4\x87", "\xc6" => "\xc4\x86",
"\xea" => "\xc4\x99", "\xca" => "\xc4\x98", "\xb3" => "\xc5\x82", "\xa3" => "\xc5\x81",
"\xf3" => "\xc3\xb3", "\xd3" => "\xc3\x93", "\x9c" => "\xc5\x9b", "\x8c" => "\xc5\x9a",
"\x9f" => "\xc5\xbc", "\x8f" => "\xc5\xbb", "\xbf" => "\xc5\xba", "\xaf" => "\xc5\xb9",
"\xf1" => "\xc5\x84", "\xd1" => "\xc5\x83" );
$iso2utf = array(
"\xb1" => "\xc4\x85", "\xa1" => "\xc4\x84", "\xe6" => "\xc4\x87", "\xc6" => "\xc4\x86",
"\xea" => "\xc4\x99", "\xca" => "\xc4\x98", "\xb3" => "\xc5\x82", "\xa3" => "\xc5\x81",
"\xf3" => "\xc3\xb3", "\xd3" => "\xc3\x93", "\xb6" => "\xc5\x9b", "\xa6" => "\xc5\x9a",
"\xbc" => "\xc5\xbc", "\xac" => "\xc5\xbb", "\xbf" => "\xc5\xba", "\xaf" => "\xc5\xb9",
"\xf1" => "\xc5\x84", "\xd1" => "\xc5\x83" );
$string = strtr($string, $x2utf);
if (strtoupper($to) == "ISO-8859-2") { return strtr($string, array_flip($iso2utf)); }
elseif (strtoupper($to) == "WINDOWS-1250") { return strtr($string, array_flip($win2utf)); }
else { return strtr($string, $utfflip); }
}