Problem z zmianą kodowania MySQL

0

witam wszystkich,
mamy problem ze zmiana kodowania bazy mysql, informatyk/student gdy pisał bazę nie zauważył iż zaznaczył kodowanie inne niż utf8 i teraz nie posiadamy możliwosći importu danych z tej bazy z polskimi znakami, gdy zmieni sie kodowanie na utf-8 o jakie nam chodzi to on je zamienia ale niestety własnie na te krzaczki przy okazji polskich znaków, nowy informatyk rozkłada ręce... czy jest może jakaś opcja by zrobić zmianę tych danych z tego innego kodowania na utf-8 bez zmiany polskich znaków? może to być nawet jakiś skrypt można go zostawić na noc...

z góry dziękuje za pomoc
dp

0

Tak musie wyeksportować dane do pliku i zmienić kodowanie na UTF8. Następnie zmieniacie kodowanie na bazie, czyścicie jej zawartość i importujecie z poprawionego pliku.

0

probujemy tak robic ale w tym pliku zaimportowanym sa juz krzaki w miejscu polskich liter i pomimo proby konwersji ich na utf8 zarowno notepadem++ jak i komenda mysql te krzaki sie nie zmieniaja, tylko opis zmienia sie z latin1 na utf8 w pliku, nie wiem czy jest jakas opcja by to zmienic i pozniej zaimportowac juz w utf

0
  1. Eksport danych do pliku tekstowego.
  2. W pliku ma nastąpić konwersja zawartości na UTF8. Jeśli po tej konwersji pojawią się krzaki, trzeba zmienić odpowiednie znaki w taki sposób, że znaki o odpowiednich kodach ASCII (powodujące krzaki) mają zostać zastąpione odpowiednimi polskimi znakami w kodowaniu UTF8
  3. Zrobić backup bazy
  4. Wyczyścić bazę
  5. Zmienić kodowanie na UTF8
  6. Zaimportować plik przekonwertowany w punkcie 2.
0
Pijany Kot napisał(a):

probujemy tak robic ale w tym pliku zaimportowanym sa juz krzaki w miejscu polskich liter i pomimo proby konwersji ich na utf8 zarowno notepadem++ jak i komenda mysql te krzaki sie nie zmieniaja, tylko opis zmienia sie z latin1 na utf8 w pliku, nie wiem czy jest jakas opcja by to zmienic i pozniej zaimportowac juz w utf

Po otworzeniu wyeksportowanych danych w Notepad++ ustawcie kodowanie na takie jak macie na bazie, za pomocą menu "Encoding" -> "Character sets" -> i tam wybieracie swoje. Jeżeli ustawicie poprawnie to krzaczki powinny zamienić się w polskie znaki. Teraz ponownie wchodzicie w menu "Encoding" ale tym razem wybieramy opcję "Convert to UTF-8"

0

właśnie tak to robię i zaznaczam iso 8859-1 poniewaz mam latin1 w bazie a rekordy wygladaja tak D¹browa Górnicza','41-303','RoŸdzieñskiego 3 teraz sprobuje przejsc przez wszystkie kodowania w notepad++ moze namierze by to wygladalo ok a pozniej zamienie na utf8

0

niestety sprawdziłem wszystkie kodowania w notepad++ i przy żadnym polskie znaki nie wygladaja jak polskie :(( jest jak poniżej, ą to mała 1, ł to mała trójka itd...

Pijany Kot napisał(a):

właśnie tak to robię i zaznaczam iso 8859-1 poniewaz mam latin1 w bazie a rekordy wygladaja tak D¹browa Górnicza','41-303','RoŸdzieñskiego 3 teraz sprobuje przejsc przez wszystkie kodowania w notepad++ moze namierze by to wygladalo ok a pozniej zamienie na utf8

0

Hmm to dziwne. Ostatnie rozwiązanie, które przychodzi mi na myśl, to zaznacz krzaczek i wciśnij CTRL+H

0

Ctr-h czyli zamieniać to co znajdzie tylko baza ma 300 mb i to jest problem... Notepad++ się wysypuje

0

Mam pewien pomysł, mógłbym przepisać ta bazę na zasadzie kopiuj wiersze do nowej i tam użyć str_replace przy każdym rekordzie tylko jak to zrobić skoro mamy 18 znaków diakrytycznych by to mniej więcej działało - baza jest duuza

Pobierz dane z tabeli a z bazy a
Jeśli znajdziesz litere (18 liter) zamień na (18 liter)
/Tylko jak to zrobić by nie pisać tego 18 razy, tu jako przykład mała 3 to ł
Wpisz do tabeli a w bazie b

1 użytkowników online, w tym zalogowanych: 0, gości: 1