Skocz do zawartości

[mysql] polskie znaki na cal.pl


yavaho

Rekomendowane odpowiedzi

Tworze nową baze:

System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)

System porównań dla połączenia MySQL: latin2_general_ci

Tworze nowe tabele:

TYPE=MyISAM DEFAULT CHARSET=latin2

w PhpMyAdmin widze że dla wszystkil pół tekstowych jest latin2_general_ci

Na stronie podczas zapisu i odczytu danych do/z bazy jest zawsze:

header('Content-Type: text/html; charset=iso-8859-2');

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />

Pomimo tego w bazie cały czas zapisują się ????? zamiast polskich czcionek :/

Dopiero wstawienie dodatkowego zapytania rozwiązuje problem:

mysql_query('SET CHARSET latin2');

Ale czy nie ma innej możliwości na tym hostingu (bez tego dodatkowego zapytania) aby zmusić baze danych do poprawnego zapisu polskich czcionek?

.

Odnośnik do komentarza
Udostępnij na innych stronach

Po pierwsze: to co Ci przeszkadza to jedno dodatkowe zapytanie.

Po drugie: rozumiesz co to jest kodowanie ?

Po trzecie: zle to mogą sie zapisywac polskie znaki a nie czcionki

Polskie znami można prezentowac w postaci cyfrowej na kilka albo nawet kilkanaście sposobów.

Jeżeli masz stronę iso-8859-2 a baza jest UTF8 to musisz coś z tym zrobić. Baza danych sama sie nie domyśli że w jakim formacie ty wpisujesz znaki. Dla niej to tylko bajty danych i zapisze je tak jak dostała w kodowaniu UTF8 (kodowanie domyślne bazy).

Jeżeli wykonasz mysql_query('SET CHARSET latin2'); to wtedy baza danych WIE ze dane w SQL są LATIN2 i zapisuje je poprawnie.

Teoretycznie wydawało by sie ze skoro tabela jest latin2 to powinno działać, nic bardziej mylnego.

Kolejna sprawa to uwstecznianie sie za pomocą kodowanie nie UTF8, może nie odrazu ale pewnego dnia bedzie to strzał w plecy.

Odnośnik do komentarza
Udostępnij na innych stronach

Po pierwsze: to co Ci przeszkadza to jedno dodatkowe zapytanie.
To jest właśnie ten jeden główny problem (+ jedno zbędne dodatkowe) Może dla kogoś to tylko po prostu jedno zapytanie nie ponoszące za sobą żadnych konsekwencji.
Po drugie: rozumiesz co to jest kodowanie ?
rozumiem
Po trzecie: zle to mogą sie zapisywac polskie znaki a nie czcionki
tego akurat nie rozumiem, dla mnie to jedno i to samo :D
Jeżeli masz stronę iso-8859-2 a baza jest UTF8 to musisz coś z tym zrobić. Baza danych sama sie nie domyśli że w jakim formacie ty wpisujesz znaki.
Wiec co mam zrobić? Albo co jest zrobione na innych hostingach. Jak to jest rozwiązane? Musi istnieć jakaś różnica w konfiguracji, ktorej ja w phpMyAdmin nie widze.

Nie było by dla mnie nic w tym dziwnego gdyby na pozostałych hostingach z takimi samymi ustawieniami było by potrzebne własnie to jedno zapytanie. Ale nie jest potrzebne.

I w jakim celu wybiera się system porównań dla połączenia MySQL i kodowanie dla poczczegółnych tabel? Jeżeli ten parametr nie brany jest pod uwagę?

Próbowałem już chyba wszystkich możliwych ustawień ktore moge zastosować:

set names

set collation_connection

set character_set_client

set character_set_connection

set character_set_results

set character_set_server

Ale to wszytko było bez jakiejkolwiek reakcji bazy na zapisywane znaki.

.

Odnośnik do komentarza
Udostępnij na innych stronach

Baza danych sama sie nie domyśli że w jakim formacie ty wpisujesz znaki. Dla niej to tylko bajty danych i zapisze je tak jak dostała w kodowaniu UTF8 (kodowanie domyślne bazy).
Zgadza się. Dla niej (przy zapisie) nie ma znaczenia jakiego kodowania używasz do wyświetlania danych. Ważne jest to jak ją programista napisał i jakie kodowanie jej nadał.

Zmień kodowanie w bazie na latin1_general_ci i sprawdź, czy działa ;) Na stronie iso-8859-2 i bez dodatkowego zapytania przeprowadź testy.

Kolejna sprawa to uwstecznianie sie za pomocą kodowanie nie UTF8, może nie odrazu ale pewnego dnia bedzie to strzał w plecy.
Jeśli tworzy się CMS, to zgodze się. Jęśli nie, to bywa to dość kłopotliwe. Ponieważ edycja wprost z FTP (TotalCommander), poprzez Notatnik nie jest prosta przy kodowaniu utf8, poniewaz notatnik zapisze to jako iso-8859-2, a na stronie wtedy wyskoczą krzaki.
I w jakim celu wybiera się system porównań dla połączenia MySQL i kodowanie dla poczczegółnych tabel? Jeżeli ten parametr nie brany jest pod uwagę?
Właśnie kodowanie dla poszczególnych tabel i kolumn wewnątrz niej jest ważne !!

BTW

Mam wrażenie, że przenosisz bazę danych z jednego hostingu na cal.pl i dlatego masz problem z kodowaniem... .

Biuro Obslugi Klienta www.cal.pl bok@cal.pl

tel. +48 61 6703221

kom. +48 603892579, +48 601772245

Odnośnik do komentarza
Udostępnij na innych stronach

Masz kiepskiego klienta FTP Info-Cal moj obsługuje dowolne kodowanie jakie sobie wymyslę.

A ja używam MC. jest to coś pobonbnego do Dos Navigatora albo NC (Norton mommander)

Ewentualnie zmien sobie edytor tekstu na taki który Ci zapisze w dowolnym kodowaniu.

https://notepad-plus.sourceforge.net/uk/site.htm

fisty Notatnik zapisuje w takim kodowaniu w jakim sobie wybierzesz (tylko lista wyboru jest mała (Unicode, ANSI ,utf8)

Odnośnik do komentarza
Udostępnij na innych stronach

Teoretycznie wydawało by sie ze skoro tabela jest latin2 to powinno działać, nic bardziej mylnego.

A jest jakieś rozsądne wyjaśnienie dlaczego w takim wypadku kodowanie tabel nie ma znaczenia (czytałem trochę o stronach kodowych mysql i mam wrażenie, że nigdzie tego nikt tak do końca nie wytłumaczył), w takim razie po co to jest bo mi się wydaje teraz, że tak dla ozdoby dodali :(

Odnośnik do komentarza
Udostępnij na innych stronach

Mam wrażenie, że przenosisz bazę danych z jednego hostingu na cal.pl i dlatego masz problem z kodowaniem... .
A ja uważam że to nie ja mam problem z kodowaniem. Nic nie przenosiłem, wszystko tworzone od nowa, nowa baza i nowa strona.

I działa właśnie w takiej konfiguracji jaką podałeś

System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)

System porównań dla połączenia MySQL: latin1_general_ci

Strona www: iso-8859-2

Tylko kto mi teraz wytłumaczy dlaczego poprawnie działa właśnie w kodowaniu zachodnioeuropejskim ? :D

I czy w takiej konfiguracji mogą wystąpić w przyszłości problemy podczas przenosin bazy na inny hosting?

.

Odnośnik do komentarza
Udostępnij na innych stronach

Info-Cal[/b] moj obsługuje dowolne kodowanie jakie sobie wymyslę.

A ja używam MC. jest to coś pobonbnego do Dos Navigatora albo NC (Norton mommander)

Ewentualnie zmien sobie edytor tekstu na taki który Ci zapisze w dowolnym kodowaniu.

https://notepad-plus.sourceforge.net/uk/site.htm

1. Kodowanie nie zależy od klienta FTP - on tylko przesyła dane, nie wnika w ich strukturę :D

2. Zmenić edytor tekstu to nie problem, ale zawsze rozważa się domyślne ustawienia, a nie prywatne każdego użytkownika na świecie.

Tak - najmniejszy problem podczas przenoszenia baz danych jest z tabelami utf8, z innymi trzeba trochę się napocić :D

Biuro Obslugi Klienta www.cal.pl bok@cal.pl

tel. +48 61 6703221

kom. +48 603892579, +48 601772245

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności