Skocz do zawartości
bartolomeo_1

Php+mysql+vim @ Utf-8 == Disaster :p Help

Rekomendowane odpowiedzi

Witam. Nie wiem czy to właściwy dział ale mam wrażenie że najprędzej tu znajdzie się ktoś kto będzie umiał odpowiedzieć. Mam problem tam gdzie problemu być nie powinno:

 

pisze w php w vim-ie ( set enc=utf8 )

wyświetlanie przez apache w php (<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">)

wszystko gra. wyświetla polskie znaki poprawnie.

tworze tablice w mysql:

 

"create table uzytkownicy (id varchar(32)) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"

przez php obsługuje żądania

 

"insert into uzytkownicy(id) values('ęóąśłżźćń')""select * from uzytkownicy"

wszyskto wyświetlane ok.

wchodze do "mysql -u root -p ". tam daje

 

select * from uzytkownicy where id = utf8'ąęóąśłżźćń' select * from uzytkownicy
pierwszy nic a w drugim krzaczki zamiast polskich liter.

mało tego: cały serwer mysql ustawiony jest na utf8.

 

jakby tego było mało: vimem (utf8) edytowałem plik później ładowany prze load data infile. wynik: ani mysql nie widzi tego poprawnie (znaki zapytania) ani potem apache nie wyświetla tego poprawnie (tu również zamiast są znaki zapytania). walczę z tym już jakiś czas i mam dość. potrzebuje żeby to było w jednym kodowaniu (np utf8) żeby: administrować loginami z polskimi znakami i edytować w vimie zrzucone tabele. może ktoś już się z tym spotkał? proszę o jakakolwiek podpowiedź. zmienić kodowanie w całości? jasne tylko na jakie, żeby nie było takich jazd?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Może problem tkwi w ustawieniach kodowania samego terminala? Bo z tego co napisałeś, póki korzystasz tylko z php do komunikacji z bazą, to dane są wyświetlane poprawnie.

 

Ja używałem kodowania iso8859-2 i nie miałem problemów z korzystaniem z bazy danych mysql-a. Dobrze współpracowała zarówno z php, z shellem i z mceditem (edytowanie wyeksportowanej bazy). Ale domyślnym kodowaniem w systemie było iso8859-2.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

obawiam się, że problem leży głębiej. mam ustawione w terminalu:

 

SET character_set_server=utf8;// SET NAMES 'utf8';// SET CHARACTER SET utf8;//

a kłopotem jest to, że mysql pobierając (load data infile) dobrze sformatowane dane (vim utf8) konwertuje je jakoś do postaci innej niż utf8 który pobiera php. dodam tylko ze uzywając select into outfile mysql zapisuje plik w kodowaniu innym niz utf8 vima czy php. mało tego. jak próbuje teraz zwykłego

 

insert into uzytkownicy(id) values ('ę')

to zawsze wypisuje mi

ERROR 1406 (22001): Data too long for column 'id' at row 1

 

:mur:

 

sproboje doczytac cos jeszce na http://dev.mysql.com/doc/ ew zmienic na iso8859-2

Edytowane przez bartolomeo_1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Może masz taki sam problem jak ja miałem. Potem odkryłem że są 3 typy UTF-8: UNIX, DOS i MAC

hmmm. no to juz wiem czego szukac. ale czy to mozliwe ze te 3 utf8 inaczej koduja polskie zanaki? ale i tak nie jest dobrze bo przeformatowalem wszysko na iso-8859-2 (@mysql = latin2) i dalej inaczej koduje php a inaczej przechowuje mysql (znaki zapytania miast polskich literek). probowalem wyslac przy polaczeniu przez php komendy

SET NAMES 'utf8';//SET CHARACTER SET utf8;//
bez zmian. poddalem sie. napisalem dodatkowo małą stroneke w php ktora pozwala mi na wykonanie dowolnej komendy (loguje sie jako root nie jakis phpbot) i po prostu przesyla komende do serwera i zwraca odpowiedz. nie jest to rozwiazanie idealne (bezpieczenstwo :P ) ale lepszego na razie nie ma. root jest zabepieczony dlugim haslem i ograniczona strefa logowania. lepiej na razie nie bedzie. moze przy okazji sproboje przeinstalowac wszysko. chyba ze jeszcze ktos ma jakis pomysl? Edytowane przez bartolomeo_1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...