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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 10:22