Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Krzaki w MySQL... i tylko tam
Forum PHP.pl > Forum > Bazy danych > MySQL
Tigerrr
Cześć,

Mam taki problem, że polskie znaki trafiają do bazy w postaci żźćąśęó. Na stronie po pobraniu z bazy wszystko wygląda już w porządku. Domyślam się, że to problem z kodowaniem w bazie, ale zmieniłem już wszystko co mogłem i nadal nic :/

Moje ustawienia:
  • System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
  • System porównań dla połączenia MySQL: utf8_general_ci
  • Kodowanie porównań dla tabel: utf8_general_ci
  • Kodowanie porównań dla kolumn: utf_general_ci
I jestem w kropce, nie mam pojęcia co jeszcze może być nie tak. Strona jest kodowana na 100% poprawnie, wszystko w utf8 za pomocą notepad++, w mecie też deklaracja utf8, dodany na samym początku kodu php każdej strony parametr header('Content-Type: text/html; charset=utf-8');

Proszę o pomoc bo problem jest już dla mnie conajmniej irytujący smile.gif
artur_dziocha
baza sama sobie nadaje odpowiedniki polskich znaczków wiec tak powinno zostać
może spróbuj tego
http://blog.mwojcik.pl/2006/10/08/polskie-znaki-w-mysql/
Tigerrr
Właśnie na podstawie tej strony poustawiałem wszystko smile.gif Polecam. Naprawdę świetnie zrobiona, dużo wyjaśnia.

Mimo wszystko mój problem pozostaje nierozwązany. A niestety znaki MUSZĄ być poprawnie zapisywane do bazy ponieważ następnie będę eksportował wpisy do arkusza excel z poziomu phpMyAdmina. I oczywiście wszystko jest zrzucane do pliku .xls razem z krzakami :/ A ręczne poprawianie nie wchodzi w grę, gdyż wpisów będzie okolo paru tysięcy. Jakieś pomysły co jeszcze mógłbym zrobić żeby rozwiązać ten problem?
bogdan89
ja to mam taki patent, że zawsze gdy muszę zrobić coś z wykorzystaniem bazy danych dodaję zaraz po połączeniu z bazą (czyli po mysql_connect i mysql_select_db):
  1. <?php
  2. mysql_query('SET NAMES utf8');
  3. ?>
Tigerrr
Bogdan89, udało się smile.gif WIELKIE DZIĘKI

Na wcześniej wspomnianej stronie jest podana informacja:

"Może istnieć potrzeba, że w kodzie PHP, po każdym połączeniu sie z bazą (mysql_connect) bedziemy musieli wstawić linijkę
  1. mysql_query('SET CHARSET latin2');"

'SET CHARSET xxx' która służy raczej do deklarowania kodowania tablicy przy jej tworzeniu (jeżeli ma jeszcze jakieś zastosowanie to proszę mnie poprawić). Zamiana na 'SET NAMES xxx' jak wspomniał bogdan89 daje oczekiwany rezultat. Temat zamknięty smile.gif

Pozdrawiam
gutekbh
Pozwole się podłączyć pod wątek smile.gif

Mam ten sam problem jeśli chodzi o zapis znaków w bazie. Na stronie wszystko wyświetla się ok.
Problem pojawia się np. podczas zapytania z sortowaniem. Mam tabele z miastami. Daje
select * from 'miasta' ORDER by nazwa

Niestety miasta takie jak Żywiec są w środku listy. W bazie jest zapisany jako 'Ĺťywiec'.
Czy jest jakaś możliwość żeby sortowanie było poprawne?
erix
A masz ustawione kodowanie znaków dla kolumny utf8_general_ci, czy utf8_polish_ci? Między jednym a drugim jest różnica w kolejności sortowania znaków narodowych.
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.