We are in the process of migrating this forum. A new space will be available soon. We are sorry for the inconvenience.

Co jest z kodowaniem znaków?


Łabędź
16-11-2005, 08:28
Cytat Napisał pawel
ludzie najwyzszy czas przestawic sie na utf-8
nie mam z nim problemow zarowno po stronie bazy jak i przegldarki, nie musze juz stosowac dziwnych funkcji do konwersji znakow z win-1250 na iso jak kto uzywa explorera, jak chce moge miec strone w innych werjach jezykowych bez zmiany kodowania i nie bedzie problemow, wiekszosc edytorow (jak nie wszystkie) maja wbudowana obsluge utf, nie musze przepuszczac strony przez 2iso itp... same zalety
I tym miłym akcentem zamykam wątek. Wszystkie problemy i ich sposoby rozwiązania zostały już tu omówione - zaczynamy się powtarzać.

Co do utf-8: przypominam, że wg polskiej normy standardowym kodowaniem polskich znaków jest nadal iso-8859-2 i raczej prędko się to nie zmieni.

Zamykamy

pawel
16-11-2005, 00:12
ludzie najwyzszy czas przestawic sie na utf-8
nie mam z nim problemow zarowno po stronie bazy jak i przegldarki, nie musze juz stosowac dziwnych funkcji do konwersji znakow z win-1250 na iso jak kto uzywa explorera, jak chce moge miec strone w innych werjach jezykowych bez zmiany kodowania i nie bedzie problemow, wiekszosc edytorow (jak nie wszystkie) maja wbudowana obsluge utf, nie musze przepuszczac strony przez 2iso itp... same zalety

fialek
15-11-2005, 23:04
wiec tak.
cos probowalem wyczararowac. marny skutek
w bazie litery mam juz po polsku ale na stronie nadal sa "?"

YaCa
15-11-2005, 13:25
czy zrobienie tego co wy wcześniej jest takie trudne, czy ja poprostu taki tępy jestem, może ktoś mi to zrobić?? albo wytłumaczyć krok po kroku bo ja już sił niemam na to a rezultat jest taki 30wdh.ovh.org
ja już nie prosze, a błagam o pomoc...

jeszcze moze sie recznie ponęcze...

TheRiko
23-10-2005, 16:34
Działa, dzięki wielkie

Łabędź
23-10-2005, 14:40
Cytat Napisał TheRiko
Tak
Ale po zalogowaniu jest wszędzie już ustawione na latin2.
Po nawiązaniu połączenia z bazą danych należy wykonać komendę 'set charset latin2'.

pozdrawiam

TheRiko
23-10-2005, 10:21
Cytat Napisał Łabędź
Pisząc 'z bazy' miał Pan na myśli phpMyAdmin?
Tak

Cytat Napisał Łabędź
Prawdopodobnie należy ustawić charset po każdym połączeniu php z bazą.
Ale po zalogowaniu jest wszędzie już ustawione na latin2.

Cytat Napisał Łabędź
Jeżeli jest to jakiś CMS to podejrzewam, że trzeba to ustawić w konfiguracji.
Nie jest to CMS

Łabędź
22-10-2005, 21:31
Cytat Napisał TheRiko
OK, w tej chwili dane wprowadzane z bazy mają ogonki, ale dane wprowadzone poprzez PHP mają krzaczki, w czym problem?
Pisząc 'z bazy' miał Pan na myśli phpMyAdmin?

Prawdopodobnie należy ustawić charset po każdym połączeniu php z bazą. Jeżeli jest to jakiś CMS to podejrzewam, że trzeba to ustawić w konfiguracji.

pozdrawiam

TheRiko
22-10-2005, 18:04
OK, w tej chwili dane wprowadzane z bazy mają ogonki, ale dane wprowadzone poprzez PHP mają krzaczki, w czym problem?

TheRiko
22-10-2005, 13:03
Tzn pozmieniałem ręcznie, ale po konwertowaniu, wychodziło na to samo. Czytałem wątek od początku dwa razu i tak jak mówię, mam wszędzie latin2 więc powinno być ok, ale tak nie jest... Nawet kasowałem całą tabelę żeby utworzyć ją od początku ale jest to samo...

Łabędź
22-10-2005, 12:59
Cytat Napisał TheRiko
W phpMyAdmin jest źle. Wszędzie mam "latin2_general_ci" w każdej kolumnie i tabeli...
Czy przekonwertował Pan dane w tabeli?

Proszę prześledzić od początku ten wątek, bo mam wrażenie, że historia się powtarza.

pozdrawiam

TheRiko
22-10-2005, 12:33
W phpMyAdmin jest źle. Wszędzie mam "latin2_general_ci" w każdej kolumnie i tabeli...

Łabędź
22-10-2005, 12:11
Cytat Napisał TheRiko
Witam, coś mi to nie działa...
Ustawiłem wszędzie metodę porównawczą napisów na "latin2_general_ci" i loguje sie na iso-8859-2 jednak jak dodaje dane do bazy to są krzaczki, co robie źle?
Jakie jest kodowanie tabeli (kolumny)?
Gdzie jest źle, w phpMyAdmin, czy PHP?

pozdrawiam

TheRiko
22-10-2005, 12:08
Witam, coś mi to nie działa...
Ustawiłem wszędzie metodę porównawczą napisów na "latin2_general_ci" i loguje sie na iso-8859-2 jednak jak dodaje dane do bazy to są krzaczki, co robie źle?

trivet
18-10-2005, 09:34
Kto ma chwile czasu i dobre checi niech mi zrobi to kodowanie bo mnie zaczyna trafiac Zalezy mi na tym bardzo wiec prosilbym kogos znajacego sie na tym i wiedzacego jak to zrobic (najlepiej zeby juz to robil) i uczciwego usera o to... baza jest malutka ma 700 kb strona w trakcie tworzenia wiec nie jest potrzeba nie wiadomo ile czasu... pozdrawiam i oczekuje chetnych

Blackhole
13-10-2005, 15:11
Trzeba ustawić poprzez PHP kodowanie latin2:
Kod:
$sql = "SET CHARSET latin2";
mysql_query($sql);
Potem tak, jak mi radzono trzeba przerobić tabele na "binary". Od tej pory na stronie widać już poprawne polskie litery. Aby jednak można było edytować dane (i wpisywać nowe) do tabeli, trzeba przerobić jeszcze tabele na "latin2"

Mnie osobiście zmyliły te pytajniki

Łabędź
13-10-2005, 14:37
Cytat Napisał Blackhole
Już jest wszystko dobrze
To jeszcze poproszę o opisanie co, jak i dlaczego dla innych użytkowników. Być może ktoś ma/będzie miał podobny problem.

pozdrawiam

Blackhole
13-10-2005, 14:07
Już jest wszystko dobrze

Dziękuję za pomoc

Łabędź
13-10-2005, 11:35
Cytat Napisał Blackhole
Okazuje się, że to zapytanie jest błędne. Jak więc powinno być poprawnie???
Kod:
set charset latin2
pozdrawiam

Łabędź
13-10-2005, 11:33
Cytat Napisał Blackhole
Wykonałem więc
Kod:
ALTER TABLE modlitewnik MODIFY modlitwa TEXT CHARACTER SET binary
i na stronie już były pl litery poprawnie. W phpMyAdmin był niestety typ pola blob, więc przerobiłem kolumnę na latin2 i teraz znów są na stronie pytajniki

Ja już nie ma siły do tego Proszę o dokładne informacje, co i jak mam zrobić.
No niestety, pobawiłem się trochę tym kodowaniem i to co pisze na stronie MySQL sprawdza się tylko przy konwersji danych z MySQL 4.0 na 4.1. Zmiana kodowania uda się tylko wtedy kiedy nie są stracone informacje o znakach czyli np. zamiast polskich liter występują dziwne znaczki, ale nie znaki zapytania.
Konwersja niestety nie jest powtarzalna, tj. jeżeli zrobimy konwersję (cały czas tekst w latin2) z latin1na latin2, to będzie ok, ale już przy latin2->latin1->latin2 utracimy dane o polskich znakach.

Prawdopodobnie pozostaje Panu ustawienie kodowania wszędzie na latin2 i zmiana ręczna polskich znaków.

pozdrawiam

Blackhole
13-10-2005, 11:14
Cytat Napisał Blackhole
Kod:
$sql = "CHARACTER SET latin2";
mysql_query($sql);
Okazuje się, że to zapytanie jest błędne. Jak więc powinno być poprawnie???

Blackhole
13-10-2005, 10:20
Wykonałem więc
Kod:
ALTER TABLE modlitewnik MODIFY modlitwa TEXT CHARACTER SET binary
i na stronie już były pl litery poprawnie. W phpMyAdmin był niestety typ pola blob, więc przerobiłem kolumnę na latin2 i teraz znów są na stronie pytajniki

Ja już nie ma siły do tego Proszę o dokładne informacje, co i jak mam zrobić.

Łabędź
13-10-2005, 09:54
Cytat Napisał Blackhole
No to jak mam to przekonwerterować, skoro to zapytanie
Kod:
ALTER TABLE modlitewnik MODIFY modlitwa TEXT CHARACTER SET latin2
nie działa z zamierzonym skutkiem?
Mam nadzieję, że ma Pan kopie bazy danych. Konwertowanie tablicy bezpośrednio z latin1 na latin2 spowoduje utratę polskich znaków (które przecież w latin1 nie występują.). Należy najpierw przekodować latin1 na tryb binarnym, a dopiero później na latin2.

http://dev.mysql.com/doc/refman/4.1/...onversion.html

pozdrawiam

Blackhole
13-10-2005, 09:11
No to jak mam to przekonwerterować, skoro to zapytanie
Kod:
ALTER TABLE modlitewnik MODIFY modlitwa TEXT CHARACTER SET latin2
nie działa z zamierzonym skutkiem?

Łabędź
13-10-2005, 09:03
Cytat Napisał Blackhole
Wydaje mi się, że problem jest w tym, że powino tego, iż przy logowaniu wybiorę kodowanie ISO-8859-2, to po zalogowaniu pisze po prawej stronie, że system kodowania znaków dla MySQL to UTF-8
UTF-8 to system kodowania wewnątrz bazy danych.

http://dev.mysql.com/doc/refman/4.1/...-metadata.html

Cały problem polega na tym, że tabele bez zdefiniowanego kodowania mają standardowo kodowanie latin1. Jeżeli jest problem z polskimi literami, należy przekonwertować tabele (zawartość jest w latin2!) z latin1 na latin2.

pozdrawiam

Blackhole
13-10-2005, 08:37
Wydaje mi się, że problem jest w tym, że powino tego, iż przy logowaniu wybiorę kodowanie ISO-8859-2, to po zalogowaniu pisze po prawej stronie, że system kodowania znaków dla MySQL to UTF-8

Proszę o pomoc

Blackhole
12-10-2005, 20:08
Jak więc mam to zrobić, skoro to, co robiłem do tej pory, nie poskutkowało?

Łabędź
12-10-2005, 14:53
Cytat Napisał Blackhole
Czy coś jest jeszcze źle?
MySQL 'myśli', że dane w bazie są w latin1. Należy przekonwertować dane z latin1 na latin2 (jak w linku podanym wyżej)

pozdrawiam

Blackhole
12-10-2005, 14:39
Zmieniłem więc na "latin2". Udało się. Ale na stronie nadal są wyświetlane pytajniki
Po połączeniu się z bazą wykonuję kod
Kod:
$sql = "CHARACTER SET latin2";
mysql_query($sql);
Czy coś jest jeszcze źle?

Łabędź
11-10-2005, 21:03
Cytat Napisał Blackhole
CHARACTER SET 'iso-8859-2',
W MySQL to się nazywa 'latin2'.
Nikt nie wie dlaczego

pozdrawiam

Blackhole
11-10-2005, 20:30
Wykonuję zapytanie
Kod:
 ALTER TABLE modlitewnik MODIFY modlitwa text CHARACTER SET 'iso-8859-2',
MODIFY nazwa text CHARACTER SET 'iso-8859-2',
MODIFY podpis text CHARACTER SET 'iso-8859-2';
i dostaję
#1115 - Unknown character set: 'iso-8859-2'

Łabędź
11-10-2005, 19:29
Cytat Napisał Blackhole
A gdzie i jak się ustawia to "collate"?
Tabele należy przekodować na iso-8859-2 (http://dev.mysql.com/doc/mysql/en/ch...nversion.html).
Po połączeniu do bazy danych przez PHP ustawić 'character set latin2'.
Przed zalogowaniem do phpMyAdmin należy ustawić na iso-8859-2.

Powinno działać.

pozdrawiam

Blackhole
11-10-2005, 18:51
A gdzie i jak się ustawia to "collate"?

Łabędź
11-10-2005, 09:53
OK, pobawiłem się tym trochę i wiem, że sprawa nie jest taka prosta. Twórcy MySQL postanowili trochę uprzykrzyć życie i wprowadzili trochę bajerów na temat kodowania znaków w bazie, które jednak powodują, że jest ona lekko niezgodna z poprzednią wersją.

Dla użytkownika najważniejsze jest to żeby trzymać w bazie dane w określonym formacie (polecam iso-8859-2, ostatecznie utf-8), i odwoływać się do nich stosując ten sam format. czyli po połączeniu warto się upewnić, że jest ten charset co chcemy (standardowo php łączy się na iso-8859-1!), wpisywać dane w żądanym formacie i odczytywać je tak jak trzeba.

W przypadku phpMyAdmina trzeba ustawić odpowiednie kodowanie na początku (ważne - inaczej wprowadzane dane będą miały złe kodowanie), ustawić odpowiednie 'collate' i powinno działać.

W sumie bajer niezły i pozwala robić fajne sztuczki z kodowaniem, ale jak znam życie będzie też dużym źródłem problemów dla użytkowników.

pozdrawiam

Łabędź
10-10-2005, 20:51
Cytat Napisał Blackhole
Ech...

Wpisuję w phpMyAdmin te teksty z pl literami, więc to chyba coś w nim jest nie tak.
http://dev.mysql.com/doc/mysql/en/ch...onversion.html

Przed eksperymentami proponuje zrobic backup bazy.

pozdrawiam

Blackhole
10-10-2005, 12:59
Ech...

Wpisuję w phpMyAdmin te teksty z pl literami, więc to chyba coś w nim jest nie tak.

Łabędź
10-10-2005, 12:49
Cytat Napisał Blackhole
Proszę używać iso-8859-2 wtedy nie powinno być problemów.

http://labedz.ovh.org/testsql.html

testsql.html
Kod:
sqltest.php
Kod:
tekst do wpisania do bazy: $text
\n"; $db = mysql_connect('mysql.60free.ovh.org','labedz','hasło') or die("Błąd połączenia do bazy! :("); $o = mysql_query('use labedz', $db) or die("Błędne zapytanie SQL!"); $o = mysql_query("insert into test set test=\"$text\"", $db); echo "

zawartość bazy:


\n"; $o = mysql_query('select test from test', $db) or die("Błędne zapytanie SQL!"); $n = mysql_num_rows($o); for ($i=0; $i<$n; $i++) { $r = mysql_fetch_assoc($o); echo $r['test']."
\n"; } ?>
pozdrawiam

Blackhole
10-10-2005, 12:06
Link?
Strona to http://jezusimarlena.ovh.org/modlitewnik.php

Łabędź
10-10-2005, 10:08
Cytat Napisał Blackhole
Zrobiłem sobie dziś nową tabelę zawierającą pola TEXT.
Jaki link?

pozdrawiam

Blackhole
10-10-2005, 09:45
Zrobiłem sobie dziś nową tabelę zawierającą pola TEXT. Wpisałem do pola tekst zawierający pl znaki, ale na stronie (mam kodowanie iso-8859-2) wyskakują "?".
To po tej ostatniej zmianie konfuguracji coś się chyba zepsuło
Jak to naprawić.

Ps. Dodam, że w jednym polu TEXT nawet zmiana pytajnika na pl literę nic nie daje, bo po przy przeglądaniu tabeli nadal są te "?"