Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zepsułem kodowanie
Forum PHP.pl > Forum > PHP
cipronex
Witam wszystkich. To mój pierwszy post na forum.

Mój problem wygląda tak, że próbowałem przekonwertować bazę i stronę tak, by poprawnie działała w formacie unikodowym. Niestety, ale podczas tego zadania poległem i zepsułem bazę danych. Gdy przywróciłem poprzednią problem pozostał.

Problem jest zarówno z jednym serwisem strony, tj. z treścią generowaną z bazy, jak i z kanałem rss. Treść niepobierana z bazy wyświetla się poprawnie.
Próbowałem funkcji iconv, niestety bez rezultatu.

Strona: http://cipronex.boo.pl/tron/
Zyx
Wg mnie za dużo razy przepuściłeś dane przez funkcję konwersji. Innymi słowy, najpierw zamieniłeś jednobajtową literkę Ś na jej dwubajtowy odpowiednik UTF-8, a później przepuściłeś to jeszcze raz tak, że każdy z tych dwóch bajtów został znów potraktowany jako pojedyncza jednobajtowa literka i zamieniony na jej odpowiednik UTF-8, dając razem cztery bajty.
cipronex
Wyłączyłem tę funkcję na stronie, tj. wyrzuciłem kod, zanim tutaj napisałem. Podejrzewam, że problem tkwi w czym innym.
Zyx
Problem na pewno tkwi w czym innym, bo opisałem Ci objaw i ogólną przyczynę, która musi być taka, a nie inna, bo inaczej nie byłoby takich danych. Niestety, ciężko mi powiedzieć coś więcej, bo "zepsułem bazę danych" daje bardzo szeroki zakres tego, co mogłeś skopać. Fajnie by było, gdybyś opisał krok po kroku, co robiłeś i co zmieniałeś.
cipronex
1. Przestawiłem kodowanie całej bazy na utf-8.
2. Przestawiłem kodowanie całej tabeli na utf-8.
3. Przestawiłem kodowanie wszystkich pól zawierających tekst na utf-8.
4. Zmieniłem kodowanie strony na utf-8.
5. Dodałem do pliku config:
Kod
mysql_query('SET character_set_connection=utf8');
mysql_query('SET character_set_client=utf8');
mysql_query('SET character_set_results=utf8');

6. W dalszym ciągu nie działało. Trafił mnie szlag.
7. Skasowałem całą tabelę i wrzuciłem od nowa z zrzutu, który wcześniej przygotowałem.
8. Wsadziłem funkcję iconv.
9. Wyrzuciłem funkcję iconv.
Zyx
1. Nie ma czegoś takiego, jak "kodowanie bazy".
2. Nie ma czegoś takiego, jak "kodowanie tabeli".
3. Nie ma czegoś takiego, jak "kodowanie pól zawierających tekst".
4. OK.
5. No, tu możemy już mówić o kodowaniu, aczkolwiek mogłeś to zrobić dużo prościej.
6. A jak miało działać, skoro w ogóle nie przekonwertowałeś danych w tej bazie?
7. JW.
8 i 9. Po co?
cipronex
Cytat(Zyx @ 3.02.2011, 17:07:08 ) *
1. Nie ma czegoś takiego, jak "kodowanie bazy".
2. Nie ma czegoś takiego, jak "kodowanie tabeli".
3. Nie ma czegoś takiego, jak "kodowanie pól zawierających tekst".


Pisząc to miałem na myśli kolejno: to, co wyświetlało się w polu collation dla bazy danych, tabeli i pól zawierających tekst. Skrót myślowy.

Cytat(Zyx @ 3.02.2011, 17:07:08 ) *
5. No, tu możemy już mówić o kodowaniu, aczkolwiek mogłeś to zrobić dużo prościej.


Z racji niedoboru wiedzy i środków zrobiłem to w ten sposób.

Cytat(Zyx @ 3.02.2011, 17:07:08 ) *
6. A jak miało działać, skoro w ogóle nie przekonwertowałeś danych w tej bazie?


Jak wyżej. Z racji niedoboru wiedzy i środków, nie przekonwertowałem danych z tej bazy.

Cytat(Zyx @ 3.02.2011, 17:07:08 ) *
8 i 9. Po co?


Żeby w locie przekonwertować dane z bazy.

W dalszym ciągu pozostaje aktualne pytanie, co zrobić, by zmienić ten niekorzystny stan rzeczy.
Zyx
Pierwsze trzy punkty służą do porównywania tekstów, więc nie mają związku z Twoim problemem. Jednak już teraz wiem, co zrobiłeś źle. Powinieneś NAJPIERW wyciągnąć dane z bazy do konwersji, a później zmieniać parametry połączenia. Później robisz jakimś programem konwersję na UTF-8 i wgrywasz dane od nowa.

Jeszcze nic straconego - połącz się phpMyAdminem z bazą i kodowaniem "latin2" na połączeniu, zrób dumpa i gotowe. Jeśli nic nie pomieszałeś w liście kroków, nic nie uległo straceniu.
cipronex
Nie bardzo rozumiem, co to znaczy dump.
osl
dump = zrzut bazy, z angielska wink.gif
cipronex
Niestety, ale nie zadziałało.

Podbijam.

Podbijam2.
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.