Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Konwersja znaków iso-8859-2 na UTF-8
Forum PHP.pl > Forum > Bazy danych > MySQL
gilbo
Witam piszę moją stronę od nowa. Zdecydowałem się na kodowanie UTF-8, podczas gdy poprzednia wersja oparta na php-fusion była w iso-8859-2. Mam bazę danych, w której posiadam 418 rekordów i prawie każdy rekord ma jakieś polskie litery. I teraz mam kłopot i proszę o pomoc czy istnieje jakaś metoda, polecenie, funkcja za pomocą której mogę przekonwertować te prawie pół tysiąca rekordów czy muszę wszystko wpisywać od nowa?

Pozdrawiam i proszę o pomoc:)
sticker
poszukaj na tym forum pod hasłem grzegrzółka czy jakoś tak smile.gif
gilbo
Niestety pod tym hasłem nie znalazłem nic ciekawego...
Znalazłem, że rozwiązaniem może być:
  1. SET NAMES 'utf8'

Niestety mimo wszystko mam źle wyświetlane. Jedyna zmiana to, że zamiast kwadracików mam np. znaki zapytania i inne krzaczory...

Proszę o pomoc!
tiraeth
Nie, nie, nie i jeszcze raz - nie.

Operacje wykonuj w phpMyAdmin:
1) Eksportuj bazę rekordów do pliku .sql (tylko dane, bez struktury)
2) Strukturę wyeksportuj do pliku tekstowego, po czym wywal informacje o kodowaniu (DEFAULT ENCODING etc.), ewentualnie zastąp latin2_general_ci utf8_general_ci
3) Skorzystaj z iConv Online (input:ISO-8859-2 output:UTF-8) by przekonwertować plik z danymi
4) Importuj strukturę (zachowując UTF-8)
5) Importuj dane (zachowując UTF-8)

To tak w skrócie, do reszty dojść sam smile.gif
gilbo
Witam,

wielkie dzięki za okazaną pomoc. Jak zwykle użytkownicy forum.php.pl okazali się nie zawodni i problem został rozwiązany:)

Musiałem tylko wykorzystać metodę tiraeth'a i dodać jednak to SET NAMES 'utf8' i wszystko już śmiga.

Pozdrawiamm i jeszcze raz dziękuję!
osiris
Dwa szybkie sposoby:
1. Nic nie konwertuj, samo ustawianie kodowania (SET NAMES) przy laczeniu z baza wystarczy wystarczy (jesli dalej masz krzaczki to cos zle robisz).
2. stworz sobie tabele o takich samych strukturach tylko z kodowaniem utf8. Potem dla kazdej tabeli wykonaj:
  1. INSERT INTO tabela_new (SELECT * FROM tabela_old);

mysql sam zadba o konwersje.

Sam z powodzeniem korzystalem z obu sposobow.
mrc
  1. <?php
  2. mysql_query("SET NAMES 'UTF8'");
  3. ?>
JJ79
Witam .. na samym początku przeproszę ale jestem laikiem w tym temacie, piszę jednak, gdyż już przerabiam ten post ponad godzinę.
Postapiłem zgodnie ze wskazówkami tiraeth'a niestety przy próbie importu struktury otrzymuję komunikat


Jeszcze jedno .. gdzie dodaję
  1. 1.
  2. <?php
  3. 2.
  4. mysql_query("SET NAMES 'UTF8'");
  5. 3.
  6. ?>

Z góry dziękuję za odpowiedź
Max Damage
1. Przecież pisze jak byk, że baza o takiej nazwie już istnieje.
2. Wystarczy poszukać: LINK
3. Proponowałbym następnym razem założyć nowy temat, zamiast odświeżać stary.
JJ79
Dzieki za pomoc ... jak wiadac byl to moj pierwszy post ... ale ... narta
Karolinah
I ja się dołączę do tematu, bo po co dublować. To co napisał tiraeth już ktoś mi ostatnio radził, ale ja tego kompletnie ni w nogę nie rozumiem. Program Gżegżółka znalazłam parę dni temu, ale jak sprawdzić że baza w tym programie rzeczywiście przekonwertuje się do utf a nie zostanie taka jak poprzednio? Nie znam się w ogóle ani na bazach ani na kodzie. Jedynie potrafię zrobić w PhpMyAdminie backup, stąd naprawdę trudno mi tą poradę wykonać. Czy ktoś ma może jakiś pomysł na to? Muszę 3 bazy przekonwertować do utf-8 w e107. Strony mam w utf, ale bazy już nie.
Mondrunio
Miałem niedawno podobny problem Baza była zakodowana w UTF8, a po stronie przeglądarki wyskakiwały bujne krzaczki.. zrobiłem coś takiego
mysql_query('SET NAMES "utf8","latin-2"'); poszło od kopa. ph34r.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.