Bardzo często zdarza się, że chcemy sobie przekonwertować polskie znaki np. z UTF-8 do ISO-8859-2. W prosty sposób można to zrobic za pomocą funkcji iconv, jednak jak się okazuje nie zawsze jest ona włączona.
Poniżej zamieszczam kawałek kodu, który pozwala konwertować polskie znaki pomiędzy 3 różnymi kodowaniami: UTF8, ISO-8859-2, WIN-1250
<?php
define('UTF8_TO_ISO88592', 1);
define('ISO88592_TO_UTF8', 2);
define('WIN1250_TO_UTF8', 3);
define('UTF8_TO_WIN1250', 4);
define('ISO88592_TO_WIN1250', 5);
define('WIN1250_TO_ISO88592', 6);
function plCharset($string, $type = ISO88592_TO_UTF8) {
$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",
"\xbf" => "\xc5\xbc", "\x8f" => "\xc5\xbb",
"\x9f" => "\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\xba", "\xac" => "\xc5\xb9",
"\xbf" => "\xc5\xbc", "\xaf" => "\xc5\xbb",
"\xf1" => "\xc5\x84", "\xd1" => "\xc5\x83");
$win2iso = array(
"\xa5" => "\xa1", "\x8c" => "\xa6",
"\x8f" => "\xac", "\xb9" => "\xb1",
"\x9c" => "\xb6", "\x9f" => "\xbc");
switch ($type) {
case UTF8_TO_ISO88592:
$tab_conw = array_flip($iso2utf); break;
case ISO88592_TO_UTF8:
$tab_conw = $iso2utf; break;
case WIN1250_TO_UTF8:
$tab_conw = $win2utf; break;
case UTF8_TO_WIN1250:
$tab_conw = array_flip($win2utf); break;
case ISO88592_TO_WIN1250:
$tab_conw = array_flip($win2iso); break;
case WIN1250_TO_ISO88592:
$tab_conw = $win2iso; break;
}
return strtr($string, $tab_conw);
}
?>
proste i przydtne.dzieki
Zastosowalem ten chwyt na mojej stronie http://www.sztuczkiprducentow.pl polecam
Rewelacyjnie przydatne przy konwersji tekstów ze starego programu DOS’owego. Dzięki.
Dzieki Ci dobry czlowieku! Czegos takiego porzebowalem wlasnie do stronki ciagnacej z bazy imiona i nazwiska w UTF i drukujaca je do PDF-u w ISO-8859-2. Jest co prawda rozszerzenie UFPDF ale bardzo malo mozna znalezc na necie informacji jak tego uzywac. Pozdro!
Funkcja ok ale nie przewiduje konwersji wszystkich znaków jakie może wprowadzić użytkownik (np. 0xa7)