Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> mysql i utf-8 raz jeszcze
miki555
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.03.2006

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


Witam wszytskich. Na wstępie zaznaczam że nie dam spokoju dopóki ktoś mi nie pomoże rozwiązać tego problemu. Wiem że temat rzeka i że jak wpisze hasło kodowanie polskich znaków to wywala pełno na ten temat. Tylko że jak dotad a szukam już od dwóch dni, nie znalazłem sensownego rozwiązania.
Sytuacja ma się następująco:
1. Na pokładzie mam apache 2.0.55 php5 i mysql 5.0.16. W bazie domyślne kodowanie jest latin1 oraz metodę porównań latin1_swedish_ci
  1. SHOW VARIABLES LIKE 'character_set%';
  2. +--------------------------+----------------------------+
  3. | Variable_name | Value |
  4. +--------------------------+----------------------------+
  5. | character_set_client | latin1 |
  6. | character_set_connection | latin1 |
  7. | character_set_database | latin1 |
  8. | character_set_results | latin1 |
  9. | character_set_server | latin1 |
  10. | character_set_system | utf8 |
  11. | character_sets_dir | /usr/share/mysql/charsets/ |
  12. +--------------------------+----------------------------+
  13. SHOW VARIABLES LIKE 'collation%';
  14. +----------------------+-------------------+
  15. | Variable_name | Value |
  16. +----------------------+-------------------+
  17. | collation_connection | latin1_swedish_ci |
  18. | collation_database | latin1_swedish_ci |
  19. | collation_server | latin1_swedish_ci |
  20. +----------------------+-------------------+

Domyślnie dane w bazie wyświetlają sie poprawnie, lecz po przestawiniu php i apache na kodowanie utf dane pobierane z bazy wyświetlają znaki '?' w miejsach polskich znaków. Próbowałem już chyba wszytskiego:

Wpisywałem w mysql:
  1. SET CHARACTER SET utf8;
  2. SET NAMES utf8;

Lecz to powodowowało ze miałem nawet krzaczki w bazie. Dodam, że dane wklejam prosto z notatnika, wiec chyba żadne konwersje nie są potrzbne.
Probowałem ustawić domyślne kodowanie utf na tabelach np.
  1. CREATE TABLE kierunki
  2. (
  3. id_kierunek INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  4. kod VARCHAR(10) NOT NULL,
  5. nazwa VARCHAR(50) NOT NULL
  6. )ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

Też nic nie dało
Przy polączeniach bazą wykonywałem
  1. mysql_query('SET NAMES utf8');

Co jedynie spowodowało, że krzaczki zamieniły sie w inne krzaczki.
Przedstawiłem pokrótce co mniejwiecej próbowałem, ale żadanego eftku nie osiągnełem. Co robie źle co jest nie tak. Czy potrzebne są jakies konwersje skoro wkelejam tabele wraz z danymi z notatnika? Proszę o nie zamykanie tego tematu, ale na fachową pomoc. Z góry dziekuję
Go to the top of the page
+Quote Post
mariuszn3
post
Post #2





Grupa: Zarejestrowani
Postów: 352
Pomógł: 0
Dołączył: 22.01.2006

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


Jedyne co mi przychodzi do głowy to to, że dane w tabeli masz zapisane w innnym kodowaniu niż jej przypisane.
Go to the top of the page
+Quote Post
radekl
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 26.11.2003

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


zobacz czy masz w ../shared/mysql pik utf8.xml
ja nie mam a chyba powinien być właśnie walczę z podobnym problem do twojego
Go to the top of the page
+Quote Post
SongoQ
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


@miki555 Zrobil bym to w nastepujacy sposob.

Zrzut tabel pozniej konwersja do utf-8 tak zeby kodowanie w bazie bylo poprawne i zapisane krzaczki tez. Nastepnie podczas zapytania wymusic kodowanie dla sesji, klienta. (SET)

Mam nadzieje ze CI to pomoze, jak nie to pisz na forum.
Go to the top of the page
+Quote Post
miki555
post
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.03.2006

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


No więc tak wlaczylem z tym cały dzień i mniej wiecej coś poradzilem. Ustawilem domyślne w konfiracji mysql kodowanie utf8. Wyrzucilem cała baze (drop database) i stworzylem od nowa. Potem zainstalowalem phpmyadmina i zaiportowalem baze z pliku wybierajac przy tym kodowanie utf8 i to pomogło, Dodam ze tabelki tworzylem w taki sposób:
  1. CREATE TABLE kierunki
  2. (
  3. id_kierunek INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  4. kod VARCHAR(10) NOT NULL,
  5. nazwa VARCHAR(50) NOT NULL
  6. )ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

Potem jeszcze przy polaczaniu z baza dodalem zapytanie
mysql_query('SET NAMES utf8');
To pomogło, ale teraz mam inny problem. Nie wiem czemu (wczesniej mialem kodowaine iso i w takiej postaci byly dokumnety. Przekowertowalem je na utf8 i chyba gdzie niegdzie cos sie sypnelo bo w iinternet explorerze moja stronka sie rozwala jakby jakies dodatkowe znaki sie wawalily (nie chodzi mi o polskie litery bo są poprawne) jakies duze odstepy sie porobily miedzy tabelami nie wiem czemu. Pod firefoexem jest wporzadku. Co to moze byc?
Go to the top of the page
+Quote Post
mariuszn3
post
Post #6





Grupa: Zarejestrowani
Postów: 352
Pomógł: 0
Dołączył: 22.01.2006

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


może jakiś link daj...?
Go to the top of the page
+Quote Post
miki555
post
Post #7





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.03.2006

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


NIe mam żadnego linku ponieważ strona nie istnieje jeszcze w internecie. Kolejna sprawa jak zakoduje indeks.php w utf to wywala mi sie session_start() a jak dam ansi to jest ok
Używam notepad++ . Ja chyba oszaleje. Wszytsko mi sie chrzani. Help!!!!
Go to the top of the page
+Quote Post
mr.r
post
Post #8





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 14.08.2006

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


Cytat(miki555 @ 29.09.2006, 01:04:54 ) *
NIe mam żadnego linku ponieważ strona nie istnieje jeszcze w internecie. Kolejna sprawa jak zakoduje indeks.php w utf to wywala mi sie session_start() a jak dam ansi to jest ok


Prawdopodobnie edytor wstawia do pliku trzybajtowy naglowek BOM, teoretycznie jest to zachowanie poprawne, jednak powoduje problemy.

Wyrzuc z poczatku pliku te bajty: 0xEF, 0xBB, 0xBF i powinno byc wszystko ok.
Go to the top of the page
+Quote Post
SongoQ
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Jesli baza dziala z domyslnym kodowaniem utf-8 i klienta tez tak dziala to nie musisz slac kodowania do bazy.
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: 11.10.2025 - 10:28