Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Polskie znaki w UTF-8
obelix94
post
Post #1





Grupa: Nieautoryzowani
Postów: 141
Pomógł: 0
Dołączył: 30.09.2008
Skąd: Gdańsk

Ostrzeżenie: (20%)
X----


Witam!

Dookoła ludzie mi mówią: "Skończ z ISO, to przeszłość". Ale jak mam do cholery skończyć z ISO skoro nie umiem się bawić w UTF-8.

Dlatego przychodzę i pytam na forum: jak zmienić ciąg znaków ŻżŹźĄąŚśĆ棳ÓóĘę, aby był poprawnie odczytywany przez przeglądarkę?

Próbowałem gżegżółką, ale pojawiają się tylko znaczki zapytania. Ale jak już tym samym programem konwertuję do ISO to normalnie wyświetla polskie znaki.

Dodam że dodałem <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> (i odpowiednio zmieniałem).

Kolejna sprawa to mysql. Mimo poradnika na wortalu polskie znaczki zmieniają się na (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) .

Jak temu zaradzić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
pi_wo
post
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 6
Dołączył: 18.03.2009

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


Z tego co zrozumiałem zamieniłeś na UTF-8 z ISO (latin2), ale już się pogubiłem. Jeżeli zgadza się to co mówię:
  • wpisz do testowego rekordu w bazie ciąg polskich znaków diakrytycznych (np. za pomocą konsoli, phpadmina lub czego tam używasz).
  • w pliku index musi być wyszczególniona strona kodowa (<meta http-equiv="content-type" content="text/html; charset=UTF-8">)
  • zaraz po połączeniu z bazą przez php (mysql_connect) dla pewności dodaj mysql_query ('SET NAMES utf8');, choć teoretycznie nie jest to wymagane i wyświetl treść testowego rekordu.
To MUSI działać poprawnie, jeżeli baza na 100% działa w UTF-8. Jeżeli nie działa to coś masz pochrzanione w konfiguracji serwera bazy danych.

Moje przypuszczenia:

Jeżeli konwertujesz istniejącą bazę do innej strony kodowej, przed konwersją zrób dumpa i skonwertuj w gżegżółce plik do interesującego Cię formatu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Domyślam się, że tu właśnie popełniłeś błąd (nie ze swojej wiedzy). Za pewne za pomocą "ALTER DATABASE `nazwa_bazy` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci i to ALTER TABLE `nazwa_tabeli` DEFAULT CHARACTER SET utf8 COLLATE" skonwertowałeś bazę wraz z treściami. MySQL poradzi sobie ze standardowym alfabetem, nie uwzględnił jednak znaków specjalnych i wstawił zamiast nich "??". Jeżeli się nie mylę i nie zrobiłeś backup'a bazy, to czeka Cię sporo pracy, bo ww proces nie jest odwracalny ("??" to niestety fizycznie zapisane znaki).

Jeżeli masz backup, wywal wszystkie treści z bazy (lub całą bazę) i przed importem skonwertuj w gżegżółce plik .sql do UTF-8. (tip: phpMyAdmin umożliwia określenie zestawu znaków dla pliku, z którego importujesz)

Jeżeli nie masz backup'a ... Cóż :/ musisz wybrać co jest dla Ciebie wygodniejsze:
- ręczne poprawienie wszystkich treści w bazie
- czy export bazy do .sql, otworzenie pliku w notatniku i ręczne poprawienie wszystkich znaków

Ten post edytował pi_wo 19.03.2009, 11:56:40
Go to the top of the page
+Quote Post
obelix94
post
Post #3





Grupa: Nieautoryzowani
Postów: 141
Pomógł: 0
Dołączył: 30.09.2008
Skąd: Gdańsk

Ostrzeżenie: (20%)
X----


Cytat(pi_wo @ 19.03.2009, 11:52:05 ) *
Z tego co zrozumiałem zamieniłeś na UTF-8 z ISO (latin2), ale już się pogubiłem. Jeżeli zgadza się to co mówię:
  • wpisz do testowego rekordu w bazie ciąg polskich znaków diakrytycznych (np. za pomocą konsoli, phpadmina lub czego tam używasz).
  • w pliku index musi być wyszczególniona strona kodowa (<meta http-equiv="content-type" content="text/html; charset=UTF-8">)
  • zaraz po połączeniu z bazą przez php (mysql_connect) dla pewności dodaj mysql_query ('SET NAMES utf8');, choć teoretycznie nie jest to wymagane i wyświetl treść testowego rekordu.
To MUSI działać poprawnie, jeżeli baza na 100% działa w UTF-8. Jeżeli nie działa to coś masz pochrzanione w konfiguracji serwera bazy danych.


No i tak żem zrobił. W bazie ma tylko jedną tabelkę i jeden wiersz: cholerne polskie znaki. Używam konsoli myadmina sql. A i nadal nie działa...

Jak konwertowałem bazę nic w niej nie było.

Zrobiłem:
1. Eksportowałem bazę
2. Wyczyścuiłem bazę
3. Poprawiłem znaki zapytania na polskie znaki
4. Wziąłem grzegrzółkę i chciałem konwertować do utf-8 ale nie rozpoznano standardu

Co dalej?

Ten post edytował obelix94 19.03.2009, 12:18:47
Go to the top of the page
+Quote Post

Posty w temacie
- obelix94   [PHP][MYSQL] Polskie znaki w UTF-8   18.03.2009, 19:03:09
- - thomson89   W Grzegrzółce ustaw: Konwersja i niżej wybierz Win...   18.03.2009, 19:19:08
- - Spawnm   jest przyczepiony temat o tym, jest artykuł na wor...   18.03.2009, 19:22:24
- - zelu   Najlepiej miec zgodnosc we wszystkich aspektach. T...   18.03.2009, 19:23:52
- - obelix94   To tak: 1. Zrobiłem ALTER DATABASE `nazwa_bazy...   18.03.2009, 19:38:42
|- - pi_wo   Cytat(obelix94 @ 18.03.2009, 19:38:42...   18.03.2009, 20:22:45
- - Mephistofeles   Bo tekst był zapisany w latin2 czy innym kodowaniu...   18.03.2009, 19:49:52
- - zelu   A masz plik z kodem zrodlowym zapisany w kodowaniu...   18.03.2009, 20:41:17
- - Mephistofeles   To akurat nie ma znaczenia. PHP nie rozpoznaje kod...   18.03.2009, 20:45:24
- - obelix94   Nic nie działa. Nadal pojawiają si...   19.03.2009, 11:07:14
- - thomson89   Wiesz co ~obelix94: 1. Nieładnie tak mówić. 2. Też...   19.03.2009, 11:17:12
- - pi_wo   Z tego co zrozumiałem zamieniłeś na...   19.03.2009, 11:52:05
|- - obelix94   Cytat(pi_wo @ 19.03.2009, 11:52:05 ) ...   19.03.2009, 11:59:33
- - Mephistofeles   Ale w czym poprawiłeś te znaki? Bo jeśli w program...   19.03.2009, 12:23:18
- - obelix94   Mniejsza z tym. Mam ja taki pomysł a wy mi opisze...   19.03.2009, 13:52:27
- - thomson89   1. Zakładasz bazę danych 2. Ustawiasz kodowanie w ...   20.03.2009, 13:40:04
- - Ulysess   mam podobny problem.. baza jest stworzona jako utf...   29.08.2009, 18:10:54
- - athei   Przyklejony Temat: MYSQL Polskie znaki, jest tam l...   29.08.2009, 20:15:53
- - J.J.   Podepnę się pod temat by nie robić syfu. Mam stro...   21.09.2009, 18:47:26


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: 11.10.2025 - 02:27