Skocz do zawartości

Zmiana windows-1250 na iso-8859-2


infowaldo

Rekomendowane odpowiedzi

Witam,

Pracuję na starej bazie danych, w której dane przechowywane są w kodowaniu windows-1250) Teraz chciałbym zmienić kodowanie na iso-8859-2 ponieważ chciałbym zmienić kodowanie strony WWW na bardziej zgodne... Do pracy wykorzystuję PHP, MySQL.

Z tym wiąże się moja prośba. Ma ktoś pomysł na jakiś dobry skrypt który szybko i bezproblemowo przekonwertowałby mi polskie znaczki :?: Zmiana ręcznie każdego 'ś', 'ą' 'ź' itp. jakoś mi nie odpowiada :) ponieważ baza składa się z wielu tabel, kolumn, a co zatym idzie danych...

Z góry dziękuję !!!

Odnośnik do komentarza
Udostępnij na innych stronach

Witam

Wydaje mi się, że możesz zrobić to w następujący sposób. Zapisujesz całą zawartość bazy danych w pliku, czyli wykonujesz dumpa. Następnie, gdy masz to w txt (nie włączaj czasem kompresji:P) otwórz za pomocą np. Notatnik SP. Zaznaczasz cały tekst, wybierasz zamianę kodowania na ISO i zapisujesz. Potem tylko wrzucasz powstały plik do bazy i gotowe :)

W ogóle do takiej zamiany są skrypty php, ale wydaje mi się, że tak będzie szybciej, chyba, że twoja baza ma kilkaset mega :) Pozdrawiam

Dała matka rozum? To kombinuj.

Odnośnik do komentarza
Udostępnij na innych stronach

infowaldo kiedyś znalazłem coś takiego do konwertowania we wszystkie strony

 

<?

 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" => "xc4x85", "xa5" => "xc4x84",

     "xe6" => "xc4x87", "xc6" => "xc4x86",

     "xea" => "xc4x99", "xca" => "xc4x98",

     "xb3" => "xc5x82", "xa3" => "xc5x81",

     "xf3" => "xc3xb3", "xd3" => "xc3x93",

     "x9c" => "xc5x9b", "x8c" => "xc5x9a",

     "x9f" => "xc5xbc", "x8f" => "xc5xbb",

     "xbf" => "xc5xba", "xaf" => "xc5xb9",

     "xf1" => "xc5x84", "xd1" => "xc5x83"

   );

   $iso2utf = array(

     "xb1" => "xc4x85", "xa1" => "xc4x84",

     "xe6" => "xc4x87", "xc6" => "xc4x86",

     "xea" => "xc4x99", "xca" => "xc4x98",

     "xb3" => "xc5x82", "xa3" => "xc5x81",

     "xf3" => "xc3xb3", "xd3" => "xc3x93",

     "xb6" => "xc5x9b", "xa6" => "xc5x9a",

     "xbc" => "xc5xbc", "xac" => "xc5xbb",

     "xbf" => "xc5xba", "xaf" => "xc5xb9",

     "xf1" => "xc5x84", "xd1" => "xc5x83"

   );



   if ($type == ISO88592_TO_UTF8)

     return strtr($string, $iso2utf);



   if ($type == UTF8_TO_ISO88592)

     return strtr($string, array_flip($iso2utf));



   if ($type == WIN1250_TO_UTF8)

     return strtr($string, $win2utf);



   if ($type == UTF8_TO_WIN1250)

     return strtr($string, array_flip($win2utf));



   if ($type == ISO88592_TO_WIN1250)

     return strtr($string, "xa1xa6xacxb1xb6xbc",

       "xa5x8cx8fxb9x9cx9f");



   if ($type == WIN1250_TO_ISO88592)

     return strtr($string, "xa5x8cx8fxb9x9cx9f",

       "xa1xa6xacxb1xb6xbc");

 }







 echo plCharset('$string', WIN1250_TO_ISO88592);



?>

Spróbuj na jedym rekordzie może zadziała, jeśli tak to ustawisz sobie automat konwersji.

O ile dobrze pamiętam w oryginale był błąd w żź i ŻŹ ale chyba go poprawiłem

- buduj content metodą drag&drop i łatwo zgarnij SEO backlinki z msDrop

- wideoporadniki jak korzystać z msDrop

Odnośnik do komentarza
Udostępnij na innych stronach

witam

ja tez mialem ten sam problem (no i mam nadal)

zrobilem ti ierwszym sposobem (czyli sump do pliku txt, zmiana kodu w notatniku (specjalnie SP sciagnalem)

ale podczas proby wczytania tabeli spowrotem do bazy mam komunikat

#1064 - Something is wrong in your syntax obok 'ENGINE=MyISAM DEFAULT CHARSET=iso-8859-2 AUTO_INCREMENT=239 ' w linii 40 

i co to znaczy??

3 linki w podpisie!!! - Michał

Odnośnik do komentarza
Udostępnij na innych stronach

soska66 spróbuj zedytować plik txt, z wiersza ENGINE=MyISAM DEFAULT CHARSET=iso-8859-2 AUTO_INCREMENT=239; usuń DEFAULT CHARSET=iso-8859-2 . Zapisz plik i następnie spróbuj wciągnąć to jeszcze raz do bazy.

Jeśli już pisać skrypt, to lepiej skorzystać z iconv

Racja, rzeczywiście piknie konwertuje ;)

<?

$string = "ąęśćłłóź";

echo "win: $string<BR>";

$iconv = iconv("WINDOWS-1250","ISO-8859-2", "$string");

echo "iso: $iconv<BR>";

?>

Mając np. w notatniku+ dokument txt w postaci Windows-1250 powyższy kawałek kodu zwróci taki wynik:

win: šęćłłó

iso: ąęśćłłóź

Wojciechu a spotkałeś się może z czymś takim co by ze zwykłego stringu potrafiło wyniuchać w jakim podany string jest kodowaniu?

- buduj content metodą drag&drop i łatwo zgarnij SEO backlinki z msDrop

- wideoporadniki jak korzystać z msDrop

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności