Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> odzyskanie zawartosci bazy w innym kodowaniu., Strona w UTF-8, stara baza w latin2 - jak odczytać?
hao
post
Post #1





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 12.02.2004

Ostrzeżenie: (0%)
-----


Witam:

Problem ma się następująco:

Strona www jest zakodowana w utf-8.
Formularz zapisujący dane do bazy danych jest również w utf-8.
Baza danych jest w latin2.

Znaki specjalne (tutaj cyrylica) są więc zapisywane do bazy danych dziwnie; jako pytajniki.
Trochę to dziwne, bo zwykłe polskie litery są ok.

Niestety nie mogę odzyskać tekstu w cyrylicy, która zapisała się jako "?questionmark.gifquestionmark.gif?"

Probowałęm z SET NAMES, ale labo nie trafiłem, albo coś źle robię.
Najdziwniejsze, że dałbym sobie głowę uciąć, że wcześnniej, przy różnich próbach kodowania udało się dobrze odczytać te dane z "?questionmark.gifquestionmark.gif", a potem sobie zmieniłem kodowanie i już mi nie działa sad.gif

Pomocy, dane w bazie są "krytyczne" sad.gif(


I jak zrobić, żeby zapisywać cyrylicę z formularza utp8 do latin2, a potem poprawnie odczytywać? :/

Ten post edytował hao 15.05.2008, 00:30:01
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
jacekl
post
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 7
Dołączył: 4.05.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Są funkcje iconv() i mb_convert_variables() i - ale nie prościej przekodować bazę?

JL
Go to the top of the page
+Quote Post
hao
post
Post #3





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 12.02.2004

Ostrzeżenie: (0%)
-----


Na pewno byłoby i prościej i lepiej, jednak nie wiem jak się za to zabrać. Czy można to zrobić z MySQL'a bez pisania wymyślnych skryptów przelatujących całą bazę danych?
Go to the top of the page
+Quote Post
jacekl
post
Post #4





Grupa: Zarejestrowani
Postów: 36
Pomógł: 7
Dołączył: 4.05.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Najprościej byłoby tak:
1. Zrzuć całą bazę do pliku (mysqldump albo phpMyAdmin)
2. Przekoduj plik na UTF-8 (jeżeli Twój edytor nie ma takiej opcji, to notatnik albo ogonki)
3. Wywal w nim wszystkie wystapienia "CHARACTER SET" i "COLLATE" przy CREATE'ACH (na poziomie tabel oraz pól tekstowych)
4. Na końcu każdego CREATE'a wpisz "CHARACTER SET utf8 COLLATE utf8_polish_ci" (albo utf8_general_ci, jeżeli to nie jest polska strona)
5. Zaimportuj plik (mysql -ulogin -phasło nazwabazy << nazwapliku.sql - lub phpMyAdmin).
6. Gotowe.

Jeżeli skorzystasz z phpMyAdmin, to pamiętaj, żeby na pierwszej stronie zarówno przy eksporcie jak i imporcie wybrać odpowiednie kodowanie.

JL
Go to the top of the page
+Quote Post
potreb
post
Post #5





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Panie, jeżeli chodzi o utf-8 to jedna zasada. Jak masz stronę w utf-8 to i baze miej taką i dodatkowo porównywanie napisów.
Ja mam 2 serwisy z cyrylicą i wszystkie mi się ładnie zapisują.

I sprawdź czy pliki są dobrze zapisane w utf-ie


--------------------

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 20:01