Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zepsułem kodowanie, Próba konwersji z windows-1250 na utf-8
cipronex
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 3.02.2011

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


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/
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


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.
Go to the top of the page
+Quote Post
cipronex
post
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 3.02.2011

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


Wyłączyłem tę funkcję na stronie, tj. wyrzuciłem kod, zanim tutaj napisałem. Podejrzewam, że problem tkwi w czym innym.
Go to the top of the page
+Quote Post
Zyx
post
Post #4





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


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ś.
Go to the top of the page
+Quote Post
cipronex
post
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 3.02.2011

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


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.
Go to the top of the page
+Quote Post
Zyx
post
Post #6





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


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?

Ten post edytował Zyx 3.02.2011, 17:08:36
Go to the top of the page
+Quote Post
cipronex
post
Post #7





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 3.02.2011

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


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.
Go to the top of the page
+Quote Post
Zyx
post
Post #8





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


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.

Ten post edytował Zyx 3.02.2011, 19:49:26
Go to the top of the page
+Quote Post
cipronex
post
Post #9





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 3.02.2011

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


Nie bardzo rozumiem, co to znaczy dump.
Go to the top of the page
+Quote Post
osl
post
Post #10





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

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


dump = zrzut bazy, z angielska (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
cipronex
post
Post #11





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 3.02.2011

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


Niestety, ale nie zadziałało.

Podbijam.

Podbijam2.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 14:01