Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

[php/mysql] polskie znaki przy zapisie do bazy danych

Idź do strony 1, 2  Następny

 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> PHP
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
ikons
Gość





PostWysłany: Nie Maj 06, 2007 8:49 pm      Temat postu: [php/mysql] polskie znaki przy zapisie do bazy danych Odpowiedz z cytatem Pisownia

heh..
piszę panel administracyjny i napotkałem sie na nielada problem gdy zapisuję informacje do bazy za pomocą php zmienia mi się kodowanie :/
wycina polskie znaki (np ł zamienia się na ?)
nie wiem jakie to kodowanie bo nigdy nic o tym nie czytałem i jakoś mnie nie ciągnie do tego - czas tez nie pozwala za bardzo...

gdy robię to za pomocą konsoli jest wszystko ok w bazie są polskie znaki natomiast jeśli zapisuję coś za pomocą phpca to w bazie odrazu pojawia się sieczka :/
Powrót do góry
Ktoso



Dołączył: 05 Paź 2005
Posty: 963
Skąd: Akwarium

PostWysłany: Nie Maj 06, 2007 10:34 pm      Temat postu: Odpowiedz z cytatem Pisownia

Jak kodowana jest strona php, z której to zapisujesz do bazy danych?

(ISO-8859-2 to zazwyczaj dobry wybór)

_________________
Life is Study - Kintaro Oe (Golden Boy)
Project13 - The Soul of a Coder - (Portfolio)
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
ikons
Gość





PostWysłany: Nie Maj 06, 2007 10:52 pm      Temat postu: Odpowiedz z cytatem Pisownia

naturalnie iso
Kod:
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">



wiem że utf i php się nie lubią :)

iso jest zarówno na stronie na której zapisuję i na tej na której odczytuję - zresztą liczy się tylko zapis bo tak jak mówię po zapisie w bazie już nie tak jak potrzeba.. :/

próbowałem takiego myczka:

Kod:
$db_result = mysql_query("ALTER TABLE p1 MODIFY title CHAR(160) CHARACTER SET latin2;");  


p1 to tabela
title to kolumna - tak wyczytałem w dokumentacji - niby nie zwraca błędu ale nie wiem czy to jest poprawnie :/

już mi brakuje pomysłów co z tym zrobić :/
Powrót do góry
Garf



Dołączył: 25 Maj 2005
Posty: 3522
Skąd: Rzeszów

PostWysłany: Nie Maj 06, 2007 10:57 pm      Temat postu: Odpowiedz z cytatem Pisownia

Php i UTF jak najbardziej się lubią. A co do zmiany kodowania, to sprawdź sobie funkcją mysql_client_encoding, bo tutaj właśnie PHP i MySQL lubią się pogryźć.

Rozwiązania są takie: albo w konfiguracji bazy danych albo po każdym połączeniu wykonać polecenie:
Cytat:
SET NAMES latin2
. PHP skonwertuje w locie co trzeba (o ile w ogóle trzeba).
_________________
Internet nadal „nic nie rozumie”, żadnego odkrycia, choćby od niego zależał los świata,
ale nadanego w egzotycznym języku, nie odróżni od nieco mniej ważnej wieści,
że u ciotki w placku z jabłkami zrobił się w piekarniku zakalec.
Stanisław Lem
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
ikons
Gość





PostWysłany: Nie Maj 06, 2007 11:25 pm      Temat postu: Odpowiedz z cytatem Pisownia

znaczy chodzi mi o to że PHP jest totalnym ingorantem jesli chodzi o UTF8 Po prostu tam jeden znak to jeden bajt i koniec. (bynajmniej tyle sie zkursu dowiedziałem :D

a teraz do rzeczy:
miałeś racje miałem latin1
ale naral nie wiem jak to zmienić :/
na mój chłopski rozum tak:

Kod:
$db_connect_id = @mysql_connect($db_host, $db_user , $db_pass);
mysql_query("SET NAMES 'latin2'");
$charset = mysql_client_encoding($db_connect_id);


ale to nie działa :/

ps.
bez cudzysłowów też probowalem:

Kod:
mysql_query("SET NAMES latin2");
Powrót do góry
Ktoso



Dołączył: 05 Paź 2005
Posty: 963
Skąd: Akwarium

PostWysłany: Pon Maj 07, 2007 1:13 am      Temat postu: Odpowiedz z cytatem Pisownia

Garf jak zwykle dobrze prawi ;-)

Z swojej strony mogę odesłać tutaj: http://www.coderscity.net/ftopic9578.html gdzie mój, podobny problem rozwiązano.

Oraz poradzić analogicznie do tego co u mnie zadziałało:
Kod:
mysql_query("SET NAMES `latin2`");

Zauważ że te apostrofy przy latin2 to nie te ' (pod ") tylko ` (pod ~), oby to pomogło :-)

_________________
Life is Study - Kintaro Oe (Golden Boy)
Project13 - The Soul of a Coder - (Portfolio)
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
ikons
Gość





PostWysłany: Pon Maj 07, 2007 6:51 am      Temat postu: Odpowiedz z cytatem Pisownia

heh niestety nie pomogło - przeinstaluje bazę - zobaczymy co będzie martwi mnie tylko fakt ze nie wiem na jaki serwer to trafi milo by było gdyby php zawsze robił co trzeba.

PS. nie wiem gdzie ja mam głowę nie dalej jak 2 dni temu czytałem właśnie żeby używać ` a nie ' - to pierwszy skrypt w php który współpracuje z bazami danych jaki piszę - i mam proszkę za dużo wiedzy teoretycznej a za mało praktyki :/
Powrót do góry
Garf



Dołączył: 25 Maj 2005
Posty: 3522
Skąd: Rzeszów

PostWysłany: Pon Maj 07, 2007 8:00 am      Temat postu: Odpowiedz z cytatem Pisownia

ikons napisał:
znaczy chodzi mi o to że PHP jest totalnym ingorantem jesli chodzi o UTF8 Po prostu tam jeden znak to jeden bajt i koniec. (bynajmniej tyle sie zkursu dowiedziałem :D

To kiepski ten kurs ;)

Co do bazy danych - masz możliwość pogrzebania w konfiguracji? Próbowałeś zapisać jakieś dane po wywołaniu SET names?

_________________
Internet nadal „nic nie rozumie”, żadnego odkrycia, choćby od niego zależał los świata,
ale nadanego w egzotycznym języku, nie odróżni od nieco mniej ważnej wieści,
że u ciotki w placku z jabłkami zrobił się w piekarniku zakalec.
Stanisław Lem
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
ikons
Gość





PostWysłany: Pon Maj 07, 2007 9:07 am      Temat postu: Odpowiedz z cytatem Pisownia

tak mam możliwość - baza jest postawiona na localhost (webserv)

kolejność działań jest taka:
łączę się z bazą

następnie:
Kod:
mysql_query("SET NAMES `latin2`");
   $charset = mysql_client_encoding($db_connect_id);
//utf'a tez już próbowałem i co bym nie wstawił cały czas moje $charset = "latin1" :/:/



potem tworze tabele
a następnie dodaje do nich przykładowe texty

- tyle ma robić ten instalator :)
Powrót do góry
Garf



Dołączył: 25 Maj 2005
Posty: 3522
Skąd: Rzeszów

PostWysłany: Pon Maj 07, 2007 10:01 am      Temat postu: Odpowiedz z cytatem Pisownia

W sekcji mysqld pliku /etc/mysql/my.cnf dopisujesz:
Cytat:
init-connect='SET NAMES latin2'


Powinno pomóc. Pytałem, czy po wywołaniu tego polecenia i zapisie danych także wstawia krzaczki.[/i]

_________________
Internet nadal „nic nie rozumie”, żadnego odkrycia, choćby od niego zależał los świata,
ale nadanego w egzotycznym języku, nie odróżni od nieco mniej ważnej wieści,
że u ciotki w placku z jabłkami zrobił się w piekarniku zakalec.
Stanisław Lem
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> PHP Wszystkie czasy w strefie CET (Europa)
Idź do strony 1, 2  Następny
Strona 1 z 2

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.11864 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | VB4all | Tansze zakupy w Helionie | MS Office Blog |